MySQL liest, aber ohne update

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL liest, aber ohne update

    Hallo allerseits, ich bin neuzugänger hier und bezeichne mich selbst als fortgeschrittenen Anfänger
    Ich hoffe das ich mit der Zeit genauso helfen kann wie ihr mir hierbei helfen werdet (so hoffe ich).
    FAQ und Suche wurde bereits gelesen, sollte ich etwas übersehen haben,
    bitte ich um eine PM damit ich es [-ändern-] kann.
    Zeilennummer kann ich leider nicht angeben,
    da ich hier (internetzugang) keinen 'Code-Editor' habe.

    Fehlermeldung:
    Access denied for user: \'ODBC@localhost\' (Using password: NO)

    Umgebung:
    Mysql 5.3
    Apache 2
    php 5.0.3
    Localhost

    Problem:
    Die Datenbank als solches funktioniert,
    resp. es wird aus der DB gelesen und der Seitenaufbau ist problemlos.

    Jedoch beim Updaten einiger Felder erhalte ich immer die obige Fehlermeldung.
    Wie ich später feststellte, kann ich nun neuerdings auch keine INSERTS mehr machen.

    Wie gesagt, die verbindung klappt, sonst würde ich ja auch eine fehlermeldung erhalten wenn aus der DB gelesen wird,
    ich erhalte dies jedoch nur beim schreiben/ändern von Daten.

    Kann es sein das folgende Zeilen das Problem verursacht?
    PHP-Code:
    <?php
    // die 2 vermuteten Zeilen
    // datei: edit_inhalt.php
    echo "<form 
    action=./php/macros/edit_submit.php?id=
    $id&race=$race&class=$class&text=$text&macro=$macro>";

    // datei edit_submit.php
     
    $sql "UPDATE `wow_macro_macros`
     SET `text` = '
    $text',`macro` = '$macro',`race` = '$race',`class` = '$class
     WHERE `id` = '
    $id' LIMIT 1 ";

       
    // EDIT: Ganzer Code würde für die übersicht gelöscht
    ?>
    Ich bin über jede Idee, Hinweis oder Vorschlag dankbar.

    Gruss
    Arj
    Zuletzt geändert von Arjuna; 21.08.2005, 19:11.
    C = Constant
    A = And
    N = Neverending
    I = Improvement

  • #2
    Access denied for user: 'ODBC@localhost' (Using password: NO)
    hat dieser user wirklich kein password?

    oder hat er eines und du hast es nicht angegeben, was ich eher denke.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Ne eben, dieser user hat ein Pw, und es wird auch angegeben,
      und zwar auf folgende weise:

      PHP-Code:
      // Datei: gethost.inc.php
      <?
          // Diese Datei wird schon bei index.php eingelesen, 
          // also ist eine 'permanente' verbindung vorhanden, oder????
          $ip = getenv("REMOTE_ADDR");  // IP erhalten
          if ($ip == "127.0.0.1")
              {
                  // Hier sind die daten vom 'LOCAL USER',
                  // incl pw
                  $basedir = "http://localhost/";
                  include("../sql_login_local.php"); 
              }
          else
              {
                  // Hier sind die daten vom ' Internet USER',
                  // incl pw
                  $basedir = $server_name;
                  include("../sql_login.php");
              }

          $database = "db_name";     //Define DB
          mysql_select_db ($database) or die ('Cannot Select Database.'); 
      ?>
      Desshalb bin ich ja am verzweifeln,
      da die obige Datei IMMER mit eingebunden wird,
      und auch immer aus der DB gelesen werden kann,
      jedoch nichts hinein geschrieben wird..


      Hier die Datei, von welcher aus ich den Fehler erhalte,
      kompletter Code:
      PHP-Code:
      // Datei: edit_submit.php
      <?
          include("../../../gehost.php");
          
              $sql = "UPDATE `wow_macro_macros` 
          SET `text` = '$text',`macro` = '$macro',`race` = '$race',`class` = '$class'  
          WHERE `id` = '$id' LIMIT 1 ";
          $query = mysql_query($sql);

          if($query == false)
          {
              $msg = "";
              $msg = mysql_error()."<br>Bitte versuchen sie es erneut!<br>";
              header("Location: ../../?p=macros&mode=error&msg=$msg");
          } else {
              header("Location: ../../?p=macros&mode=dankee&name=$nameA");
          }

      ?>

      Oder übersehe ich hier sonst etwas?
      Wie müsste ich denn user/pw übermitteln das es in die DB geschrieben wird,
      wenn nicht mit der gethost.inc.php Datei?
      Zuletzt geändert von Arjuna; 21.08.2005, 19:49.
      C = Constant
      A = And
      N = Neverending
      I = Improvement

      Kommentar


      • #4
        Abgesehen von dem Problem, dass Ursache für deine Frage ist, hast du aber noch andere Probleme. Du kennst sie nur noch nicht

        1. Offenbar setzt dein Skript register_globals=on voraus
        2. Niemals Variablen ungeprüft in eine SQL-Anweisung übernehmen

        Bei der Insert-Anweisung solltest du mysql_escape_real_string() verwenden um SQL-Injection zu vermeiden.

        Die Variablen per $_GET Variable auslesen.

        Siehe auch:
        http://www.heddesheimer.de/coaching/register.html

        Gruß Marian
        Online-Kurse die jeder versteht: HTML, PHP, MySQL, Word, Excel
        http://www.lernpilot.de/wbt/

        Kommentar


        • #5
          Ich hoffe mal ich hab dich richtig verstanden..

          Aaalso, da ich ja edit_submit mit folgendem Code anspreche:
          PHP-Code:
          <?php
          // datei: edit_inhalt.php
          echo "<form 
          action=./php/macros/edit_submit.php?id=
          $id&race=$race&class=$class&text=$text&macro=$macro>";
          ?>
          Da die notwendigen Variable ja übergeben werden,
          sollte es kein Problem geben, da ich gethost.inc.php ja hier auch wieder included habe,
          und demzufolge die DB-Verbindung wieder erstellt ist..

          Oder?

          Zwischenfrage: Müsste ich vielleicht irgendetwas mit dem myODBC treiber für W32 (xp) einstellen?
          pw und uid sind derzeit überall (login_local.php my.ini myODBC-settings) gleich.
          Vielleicht den Treiber Speziell benennen (glaub ich zwar nicht)?
          Zuletzt geändert von Arjuna; 23.08.2005, 18:51.
          C = Constant
          A = And
          N = Neverending
          I = Improvement

          Kommentar


          • #6
            Re: MySQL liest, aber ohne schreiben

            Original geschrieben von Arjuna
            Ne eben, dieser user hat ein Pw, und es wird auch angegeben, und zwar auf folgende weise:
            Nein, da wird garantiert kein Passwort benutzt, sonst käme nicht
            Access denied for user: \'ODBC@localhost\' (Using password: NO)
            Der unter 'folgende weise' angegebene Code hat mit Logindaten per se nichts zu tun. Da wird nur irgendwas included - wir wissen nicht was, aber das was du denkst, ist es offensichtlich nicht. Poste doch mal bitte diese Includes (Passwort unkenntlich).

            Kommentar


            • #7
              wo wird denn der dbhost connected? in deinem script oben habe ich nichts sehen können. oder bin ich blind?
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Ok danke mal für die Antworten, ich werde heute abend nach ca 23:30 uhr wieder Code posten können.
                C = Constant
                A = And
                N = Neverending
                I = Improvement

                Kommentar


                • #9
                  So nun die sql_login_local (identisch mit der anderen login datei, nur andere uid/pw):
                  PHP-Code:
                  <?
                  $server = "localhost";   //Server for SQL Database
                  $user   = "userid";      //Username to Login to Database
                  $pass   = "password";    //Password to Login to database
                  mysql_connect($server, $user, $pass) or die ('Database Error.'); 

                  $database = "db_name";     //Define DB
                  $query = mysql_select_db ($database) or die ('Cannot Select Database.');
                      
                  /*    if($query == false)
                        {
                          $msg = "";
                          $msg = mysql_error()."<br>Bitte versuchen sie es erneut!<br>";
                          echo "fehler -> $msg";
                        } else {
                          echo "gut"; // Es wird IMMER gut anngezeigt
                        } */
                  ?>
                  Derweil musst ich leider Feststellen das ich dasselbe Problem bei den anderen Seiten auch habe, früher ging es!
                  Sorry für die Kommentare, english oder Deutsch, ich bin 2 sprachig aufgewachsen..

                  Ich hab mir mal ne Checkliste gemach:
                  MyODBC für Win32 -> Installiert und Konfiguriert
                  MySQL für win32 -> Installiert und Konfiguriert
                  config script für apache -> Erstellt für jede subdomain und konfiguriert
                  loginscript für die Page -> Erstellt und Eingestellt für Local und Web

                  Überall werden diesselben Daten (uid & pw) verwendet, hier sollten also keine Probleme sein.
                  Was ich sagen muss, ich kann und konnte und werde in nächster Zeit die scripts nicht Praktisch im web testen,
                  ich vermute das sie im Netz funktionieren würden, sollte das jemand für mich testen könnte..

                  Nochmals, das Problem ist bei mir, also LOCALHOST, keine Ahnung wie es sich im 'wircklichen' Netz verhält.

                  Andere von mir Installierten DB-Services:
                  Miracle Online (ODBC)
                  T4C/D4O (Access)
                  Beide habe ich mittlerweile wieder gelöscht, da diese nur zu Testzwecken verwendet wurden.

                  Bin weiterhin für jede Kritik, Vorschlag und Idee offen!!
                  Besten Dank im vorraus von einem Verzeweifelten Coder..
                  Gruss Arjuna
                  Zuletzt geändert von Arjuna; 23.08.2005, 18:51.
                  C = Constant
                  A = And
                  N = Neverending
                  I = Improvement

                  Kommentar


                  • #10
                    ich vermisse das ein oder andere mysql_error()
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Ist drin:
                      PHP-Code:
                      <?php
                      /*    if($query == false)
                            {
                              $msg = "";
                              $msg = mysql_error()."<br>Bitte versuchen sie es erneut!<br>";
                              echo "fehler -> $msg";
                            } else {
                              echo "gut"; // Es wird IMMER gut anngezeigt
                            } */
                      ?>
                      Nur auskommentiert, weil kein Fehler kommt,
                      sondern immer GUT (siehe kommentar im mehrzeilgen kommentar...

                      Der hier auskommentierte teil habe ich geschrieben als das Problem Auftrat,
                      brachte aber nix, weil es eben immer GUT anzeigte...
                      Zuletzt geändert von Arjuna; 23.08.2005, 18:49.
                      C = Constant
                      A = And
                      N = Neverending
                      I = Improvement

                      Kommentar


                      • #12
                        @Arjuna
                        Code umbrechen, lesen des Threads ist auf 1024 eine Qual

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar


                        • #13
                          Tschudligung, besser so?
                          Hab gleich alle codes umgebrochen..
                          C = Constant
                          A = And
                          N = Neverending
                          I = Improvement

                          Kommentar


                          • #14
                            Original geschrieben von Arjuna
                            Tschudligung, besser so?
                            Hab gleich alle codes umgebrochen..
                            naja, eigentlich ist der scrollbalken immernoch da, aber man kann's jetzt lesen

                            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                            Wie man Fragen richtig stellt

                            Kommentar


                            • #15
                              Original geschrieben von ghostgambler
                              naja, eigentlich ist der scrollbalken immernoch da, aber man kann's jetzt lesen
                              Das sind aber nicht mehr meine Posts die nun 'darüber' gehen


                              Zurück zur Frage, wieso kann ich von der DB lesen, aber kein Update durchführen??

                              Das ganze ist lokal.
                              Hab ich irgendwo den Code falsch?
                              Global = on !!

                              Bin wirklich für jede idee/vorschlag/kritik dankbar!
                              Ich probiere auch gern das undenkbare.

                              Gruss Arjuna
                              C = Constant
                              A = And
                              N = Neverending
                              I = Improvement

                              Kommentar

                              Lädt...
                              X