SQL Fehlermeldung-Ausgabe

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

  • SQL Fehlermeldung-Ausgabe

    Hallo,
    hier ein Stück aus einem Acript dass Daten in einer Tabelle updatet.
    Das ganze funktioniert nicht richtig, ich bekomme immer den echo Fehler angezeigt "Artikel konnte nicht geschrieben werden".
    Da ich das Problem nicht finde, wie muss ich das abändern damit ich als echo den SQL Fehler angezeigt bekomme, es gibt da doch irgendein Commando "sql_error()" oder so in der Richtung...

    PHP-Code:
    $erfolg insert_article($db_handle$lfd_nummer$artikel_array);
            
    if (
    $erfolg) {
              
    echo 
    "Artikel wurde in die DB geschrieben!<br>\n";
            } else {
              
    echo 
    "Artikel konnte nicht geschrieben werden!<br>\n";
            } 

    WÄre sehr nett wenn mir grade einer sagen könnte wie ich das else echo abändern muss um den Server error zu sehen...
    Zuletzt geändert von *[MxG]C-Rash; 12.09.2004, 11:55.

  • #2
    Änderen in der Funktion insert_article den eintrag mysql_query(...); zu mysql_query(...) or die(mysql_error());
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      Vielen Dank!
      Fehler gefunden, alles geht!
      Thx

      Kommentar


      • #4
        Das Newssystem funktioniert jetzt zwar einwandfrei, ich habe aber auch noch ein Loginsystem in dem Daten in eine Tabelle geschrieben werden, gelesen werden und editierbar sein sollen.
        Das schreiben von neuen Daten funktioniert bereits, das auslesen der Daten auch einwandfrei, nur die Profilfunktion zum editieren noch nicht, wenn einer von euch einen Moment Zeit hätte und mir noch kurz sagen könnte wo darin darin ein Fehler ist wäre das super, das wäre dann auch meine letzte Frage hier vorerst im Forum, dann würde endlich alles so funktionieren wie es soll...


        PHP-Code:
        <?
        include("HP_Mydb.php");
        include("HP_schutz.php");


        if(isset($edit)){

        $pw3 = md5($pw1);

        $usertest = mysql_query("SELECT * FROM $usertable WHERE id='$userid'");

        if (mysql_num_rows($usertest) == 1) 

        $fehler = "$fehler -Dieser Benutzername wird bereits benutzt.<br>"; 
        $fehler2 = "1"; 
        };
        if($pw1!=="$pw2"){
        $fehler = "$fehler -Ihre beiden Passwort eingaben sind nicht identisch.<br>";
        $fehler2 = "1";
        };
        if($pw3=$row['pw']){
        $pw3 = $row['pw'];
        };


        if(!isset($fehler)){

        $sql= "UPDATE $db_name $usertable SET 
        name = ´$name1´,
        email = ´$email´,
        pw = ´$pw3´,
        ICQ = ´$ICQ´,
        Ort = ´$Ort´,
        Maus = ´$Maus´,
        Mauspad = ´$Mauspad´,
        CPU = ´$CPU´,
        Grafikkarte = ´$Grafikkarte´,
        RAM = ´$RAM´,
        Lieblingsmap = ´$Lieblingsmap´,
        Lieblingswaffe = ´$Lieblingswaffe´
        WHERE id = ´$userid´;";

        mysql_query($sql) OR die(mysql_error());

        $pw1 = "$pw3";

        session_register("pw1");

        echo "<br>Ihr Passwort wurde geändert.";

        exit;
        };

        }


        echo "
        <form method='post' action=''> 
        <table>
        <tr>
        <td>
        Username:
        </td> 
        <td>
        <input type='text' name='name' value='$name1'>
        </td> 
        </tr>

        <tr>
        <td>
        E-Mail
        </td> 
        <td>
        <input type='test' name='email' value='$email'>
        </td> 
        </tr>


        <tr>
        <td>
        Neues Passwort:
        </td> 
        <td>
        <input type='password' name='pw1' value='$pw1'>
        </td> 
        </tr>
        <tr> 
        <td>
        Neues Passwort wiederholen:
        </td> 
        <td>
        <input type='password' name='pw2' value='$pw2'>
        </td> 
        </tr>


        <tr> 
        <td>ICQ:</td> 
        <td><input type='text' name='ICQ' value='$ICQ'></td> 
        </tr>

        <tr> 
        <td>Ort:</td> 
        <td><input type='text' name='Ort' value='$Ort'></td> 
        </tr>

        <tr> 
        <td>Maus:</td> 
        <td><input type='text' name='Maus' value='$Maus'></td> 
        </tr>

        <tr> 
        <td>Mauspad:</td> 
        <td><input type='text' name='Mauspad' value='$Mauspad'></td> 
        </tr>

        <tr> 
        <td>CPU:</td> 
        <td><input type='text' name='CPU' value='$CPU'></td> 
        </tr>

        <tr> 
        <td>Grafikkarte:</td> 
        <td><input type='text' name='Grafikkarte' value='$Grafikkarte'></td> 
        </tr>

        <tr> 
        <td>RAM:</td> 
        <td><input type='text' name='RAM' value='$RAM'></td> 
        </tr>

        <tr> 
        <td>Lieblingsmap:</td> 
        <td><input type='text' name='Lieblingsmap' value='$Lieblingsmap'></td> 
        </tr>

        <tr> 
        <td>Lieblingswaffe:</td> 
        <td><input type='text' name='Lieblingswaffe' value='$Lieblingswaffe'></td> 
        </tr>

         
        <tr>
        <td>
        </td>
        <td>
        <input type='hidden' name='edit' value='$edit'>
        <input type='submit' name='edit' value='Änderungen übernehmen'></td> 
        </form> 
        </td>
        </tr>
        </table>";

        ?>

        Kommentar


        • #5
          das wäre dann auch meine letzte Frage hier vorerst im Forum
          hoffentlich!
          könnte wo darin darin ein Fehler ist wäre
          - fehlerbeschreibung? was geht nicht?
          - fehlermeldungen?
          - woher kommen die ganzen vars?
          - kennste die super_globals?

          entferne mal die backticks, ersetze sie durch single quotes ... im query ... jetzt?

          also, aus
          Code:
          name = ´$name1´,
          email = ´$email´,
          Code:
          name = '$name1',
          email = '$email',
          machen ...

          PHP-Code:
          $pw1 "$pw3";
          session_register("pw1"); 
          was soll das? soll das so sein? session_register ist btw veraltet und soll nicht mehr verwendet werden ...
          warum sind da double quotes um die variable?
          Zuletzt geändert von derHund; 12.09.2004, 16:18.
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            Brachte leider keine Veränderung, und zwar:

            Erstmal muss ich mich einloggen, das wird durch die "HP_schutz.php" geregelt, dann kann ich das Formular einsehen.
            Er holt dann auch ordnungsgemäß die Daten die meinem eingeloggten Nutzer entsprechen aus der Tabelle und füllt jeweils die dafür vorgesehenen Fprmularfelder mit den richtigen Daten, sowiet alles korrekt...

            Wenn ich jetzt allerdings etwas ändere und auf "Absenden klicke lädt er die Seite neu, aber daann stehen wieder die alten Daten in dem Formular, unverändert, die Daten in der Tabelle werden nicht verändert...

            Error bekomme ich dabei gar keine angezeigt...
            Nur irgendwie funktioniert das also nicht mit dem Daten aktualisieren...


            Warum, mh, gute Frage, also ich habe mir das alles aus Tutorials zusammengestückelt, nachdem ich fertig war dann festgestellt dass das ganze selbst beim Autor des Tutorials nicht richtig funktionierte...da ich aber damit schon eine ganze Seite betreibe wäre es sehrsehr ungünstig wenn ich ein neues "Script" nachbauen würde...
            Meine php Kentnisse sind sehr begrenzt, ich bringe mir seit drei, vier Monaten das bei indem ich Tutorials nachbaue, abändere und umfunktioniere und dabei eben lerne...

            Ursprünglich konnte man mit dem Script nur Nutzernamen und Passwort eingeben und mit der SChutzfunktionen Seiten schützen, ich habe dann halt ganz viele Variablen dazu gemacht, das Formular abgeändert und die Seiten die das ganze auf die Homepage auslesen geschrieben...das geht ja auch alles, nur das editieren nicht...
            aber da ich mir mal denke dass das ja im Grunde nichts anderes ist als eine simple Änderung von Daten in ner Datenbank dachte ich mir könnt ihr mir hier vielleicht ganz schnell helfen...
            Zuletzt geändert von *[MxG]C-Rash; 12.09.2004, 16:31.

            Kommentar


            • #7
              DIe Variablen kommen von der Schutz.php die ja includet wird, die Daten von Ihr sind folgende:

              PHP-Code:
              <?


              include("HP_Mydb.php");

              $connect = mysql_query("SELECT * FROM $usertable WHERE LCASE(name) = LCASE('$name1') AND pw = '". md5($pw1) ."'");

              if (mysql_num_rows($connect) == 1) 


              $row=mysql_fetch_array($connect);

              $name1 = $row['name'];
              session_register("name1");
              session_register("pw1");
              $userid = $row['id'];
              $rang = $row['rang'];
              $email = $row['email'];
              $ICQ = $row['ICQ'];
              $Ort = $row['Ort'];
              $Maus = $row['Maus'];
              $Mauspad = $row['Mauspad'];
              $CPU = $row['CPU'];
              $Grafikkarte = $row['Grafikkarte'];
              $RAM = $row['RAM'];
              $Lieblingsmap = $row['Lieblingsmap'];
              $Lieblingswaffe = $row['Lieblingswaffe'];

              }else{
              if(isset($login)){
              echo "Deine Eingaben waren fehlerhaft. C-Rash";
              };


              echo "
              <table width='200'>
              <tr>
              <td width='50'>
              <span style=font-size:10pt>Name:</span>
              </td>
              <td width='150'>
              <form method='POST' action=''>


              <input type='hidden' name='login' value='login'>
              <input type='text' name='name1' value='$name1' size='20'>
              </td>
              </tr>
              <tr>
              <td width='50'>
              <span style=font-size:10pt>Passwort:</span>
              </td>
              <td width='150'>
              <input type='PASSWORD' size='20' value='$pw1' name='pw1'><br>
              </td>
              </tr>
              <tr>
              <td width='50'></td>
              <td width='150'> 
              <input type='submit' name='login' value='Login'>
              </td>
              </tr>
              </table>
              </form>";

              $rang = "0";

              };








              if($logout=="1"){
              session_destroy();

              echo "Du wurdest erfolgreich ausgeloggt. Bis bald! C-Rash";

              $rang = "0";
              };

              ?>

              <link rel="stylesheet" type="text/css" href="/styles/MxG.css">

              Kommentar


              • #8
                DIe Variablen kommen von der Schutz.php die ja includet wird, die Daten von Ihr sind folgende:
                [ ] du liest die daten aus deiner tabelle, schreibst sie wieder unverändert rein, wunderst dich, warum sich nix ändert?

                gib mal den update-query per echo aus, schau ihn dir an, poste ihn meinetwegen ...

                enthält er die geänderten daten? die alten daten?

                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  Danke, wie gesagt, ich bin ein Neuling der darauf hofft das andere so nett sind ihm zu helfen, selbst habe ich noch nicht so viel Ahnung davon.

                  Wo genau muss ich das echo ansetzen, alle meine Versuche grade schlugen Fehl den Inhalt des query angezeigt zu bekommen, er hat immer wieterhin nur das FOrumalr geladen

                  Kommentar


                  • #10
                    hmm,

                    wir reden doch über ihn hier:
                    PHP-Code:
                    $sql"UPDATE $db_name $usertable SET 
                    name = ´
                    $name1´,
                    email = ´
                    $email´,
                    pw = ´
                    $pw3´,
                    ICQ = ´
                    $ICQ´,
                    Ort = ´
                    $Ort´,
                    Maus = ´
                    $Maus´,
                    Mauspad = ´
                    $Mauspad´,
                    CPU = ´
                    $CPU´,
                    Grafikkarte = ´
                    $Grafikkarte´,
                    RAM = ´
                    $RAM´,
                    Lieblingsmap = ´
                    $Lieblingsmap´,
                    Lieblingswaffe = ´
                    $Lieblingswaffe´
                    WHERE id = ´
                    $userid´;"
                    den update-query, oder nicht?

                    wenn du vor $sql einfach mal nen echo setzt?
                    ähm, versuch auch mal, das semikolon am ende des querys wegzulassen, also
                    Code:
                    WHERE id = '$userid'";
                    ... nur son gedanke ...

                    ansonsten:
                    - versuche herauszufinden, was nicht geht!
                    - finde die befehlszeile in deinem code, die 'nicht geht'
                    - geh deinen code schritt für schritt durch, bis du zu einer stelle kommst, an der sich der code anders als von dir erwartet verhält

                    aus der ferne debuggen ist immer viel schwieriger als selbst-vor-dem-code-sitzend.

                    ach ja, sollte wider erwarten trotz echo nichts ausgegeben werden, benutze direkt danach mal
                    PHP-Code:
                    die('ENTE'); 
                    o.ä.

                    sollte auch dann nichts erscheinen, wird der teil des codes erst garnicht abgearbeitet ...
                    Die Zeit hat ihre Kinder längst gefressen

                    Kommentar


                    • #11
                      Danke,
                      ok, ich versuche dne Fehler zu lokalisieren, Schritt für Schritt...

                      also wenn ich irgendwo innerhalb der
                      PHP-Code:
                      if(!isset($fehler)){

                      $sql"UPDATE $db_name $usertable SET 
                      name = '
                      $name1',
                      email = '
                      $email',
                      pw = '
                      $pw3',
                      ICQ = '
                      $ICQ',
                      Ort = '
                      $Ort',
                      Maus = '
                      $Maus',
                      Mauspad = '
                      $Mauspad',
                      CPU = '
                      $CPU',
                      Grafikkarte = '
                      $Grafikkarte',
                      RAM = '
                      $RAM',
                      Lieblingsmap = '
                      $Lieblingsmap',
                      Lieblingswaffe = '
                      $Lieblingswaffe'
                      WHERE id = '
                      $userid';";

                      mysql_query($sql) OR die(mysql_error());

                      $pw1 "$pw3";

                      session_register(´pw1´);

                      echo 
                      "<br>Ihr Passwort wurde geändert.";

                      exit;
                      };


                      - Funktion "die('ENTE');" hinschreibe, egal wo, dann passiert da überhaupt keinen Unterschied...



                      Nochmal wegen der echo Ausgabe des sql_querys:
                      Ok, ich versuche ja diese Variable auszugeben, mein Problem ist nur dass ich nicht weiss wie genau ich das machen muss, wenn ich beispielsweise SO mache kommt ein Error vonwegen
                      " unexpected T_STRING, expecting ',' or ';' in..."

                      PHP-Code:
                      echo"
                      $sql= "UPDATE $db_name $usertable SET 
                      name 
                      '$name1',
                      email '$email',
                      pw '$pw3',
                      ICQ '$ICQ',
                      Ort '$Ort',
                      Maus '$Maus',
                      Mauspad '$Mauspad',
                      CPU '$CPU',
                      Grafikkarte '$Grafikkarte',
                      RAM '$RAM',
                      Lieblingsmap '$Lieblingsmap',
                      Lieblingswaffe '$Lieblingswaffe'
                      WHERE id '$userid';";


                      Wie genau mache ich das mit dem echo?

                      Kommentar


                      • #12
                        also wenn ich irgendwo innerhalb der [...] - Funktion "die('ENTE');" hinschreibe, egal wo, dann passiert da überhaupt keinen Unterschied...
                        ... ich hoffe, du hasts ohne " hingeschrieben ^^. wenn das teil nicht ausgeführt wird, scheint der code innerhalb von
                        PHP-Code:
                        if(!isset($fehler)){} 
                        garnicht ausgeführt zu werden!?
                        Wie genau mache ich das mit dem echo?
                        PHP-Code:
                        echo $sql"UPDATE $db_name $usertable SET 
                        name = '
                        $name1',
                        ... 
                        schau bitte mal auf schattenbaum.net ...
                        OffTopic:
                        es bringt wirklich nichts, wenn du hier wegen jedem pups postest ... versuch doch vorher einfach mal, durch logisches denken, probieren und manual schauen selbst eine lösung zu finden ...

                        aber, wenn, wie du sagst, selbst das die() nicht ausgeführt wird, wird wohl der query auch nicht ausgegeben werden

                        mach mal bitte aus
                        PHP-Code:
                        if(!isset($fehler)){ 
                        PHP-Code:
                        var_dump($fehler);
                        if(!isset(
                        $fehler)){ 
                        und poste die ausgabe.
                        Die Zeit hat ihre Kinder längst gefressen

                        Kommentar


                        • #13
                          Danke fürs Antworten,
                          ob dus glausbt ode net, aber ich war echt schon bevor ich hier gepostet hab auf schattenbaum, auch bei webmasterpro und auch hier im Forum hab ich vorher eifrig mit der Suchfunktion gearbeitet, aber hat mich alles nicht weitergebracht...daher der Post hier...

                          Natürlich habe ich das OHNE Anführungszeichen geschrieben *lol*

                          Wenn ich die sql Variable per echo so wie du gesagt hast ausgebe geschieht tatsächlich keinerlei Veränderung, das Formular wird einfach wie gehabt neu geladen, also scheint wohl der Code darin echt nicht bearbietet zu werden, wie du gesagt hast..

                          Das einzigste was jetzt geklappt hat war das "var_dump($fehler);" (OHNE Anführungszeichen) zu setzen, dann zeigt er mir wnen ich auf absenden gedrückt habe über dem Formular an:
                          PHP-Code:
                          string(47" -Dieser Benutzername wird bereits benutzt.

                          Das heisst ja jetzt dass er jetzt das im "ifisset etc" abarbeitet oder?
                          Das löst bei mir folgendes aus:

                          Weil der Sinn der Datei besteht ja darin die Nutzerdaten dieses Benutzers zu verändern, von daher ist es ja logisch dass der Benutzername schon in der Datenbank steht...

                          Jetzt ist der erste Fehler damit ja scheinbar lokalisiert, weisst du oder jemand anderes jetzt vielleicht noch wie ich das umschrieben muss damit es funktioniert??

                          Ich bin danach auch für lange hier im Forum still!
                          ...und irh habt einen Menschen glücklicher gemacht...*anfleh*
                          Zuletzt geändert von *[MxG]C-Rash; 12.09.2004, 20:24.

                          Kommentar


                          • #14
                            string(47) " -Dieser Benutzername wird bereits benutzt.
                            na, die meldung ist doch super. somit ist $fehler gesetzt und der bereich, der im falle von nicht-fehler abgearbeitet werden soll, wird nie erreicht ...

                            PHP-Code:
                            $usertest mysql_query("SELECT * FROM $usertable WHERE id='$userid'");
                            if (
                            mysql_num_rows($usertest) == 1
                            $fehler "$fehler -Dieser Benutzername wird bereits benutzt.<br>"
                            hier schaust du, ob daten vorhanden sind, zu der id, die du beim ändern benutzt, und sollten daten vorhanden sein (was ja der fall ist), setzt du die $fehler .. somit wird bei vorhandensein von zu ändernden daten immer ein fehler erzeugt und der update niemals ausgeführt?
                            Die Zeit hat ihre Kinder längst gefressen

                            Kommentar


                            • #15
                              Thx for help!

                              Ich habe jetzt einfach mal

                              PHP-Code:
                              if (mysql_num_rows($usertest) !== 1
                              draus gemacht, jetzt arbeitet er die Befehle ab, allerdings habe ich angeblich jetzt nen Syntaxerror drin,

                              PHP-Code:
                              NULL You have an error in your SQL syntax near 'MxGUsers SET name = 'testusereingabe', email = 'testmaileingabe', pw = 'b532fc47cdea7a38' at line 1 

                              Der dazugehörige Code war:

                              PHP-Code:

                              var_dump
                              ($fehler);
                              if(!isset(
                              $fehler)){

                              $sql"UPDATE $db_name $usertable SET 
                              name = '
                              $name1', 
                              email = '
                              $email', 
                              pw = '
                              $pw3', 
                              ICQ = '
                              $ICQ', 
                              Ort = '
                              $Ort', 
                              Maus = '
                              $Maus', 
                              Mauspad = '
                              $Mauspad', 
                              CPU = '
                              $CPU', 
                              Grafikkarte = '
                              $Grafikkarte', 
                              RAM = '
                              $RAM', 
                              Lieblingsmap = '
                              $Lieblingsmap', 
                              Lieblingswaffe = '
                              $Lieblingswaffe
                              WHERE id = '
                              $userid';";

                              mysql_query($sql) OR die(mysql_error());

                              $pw1 "$pw3";

                              session_register(´pw1´);

                              echo 
                              "<br>Ihr Passwort wurde geändert.";

                              exit;
                              };



                              Ich finde den Syntaxfehler trotz ausgiebigem suchen nicht...
                              Zuletzt geändert von *[MxG]C-Rash; 12.09.2004, 20:51.

                              Kommentar

                              Lädt...
                              X