Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL Befehl geht mal und mal nicht

Einklappen

Neue Werbung 2019

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

  • SQL Befehl geht mal und mal nicht

    Hallo zusammen,

    ich versuche, über eine php-Seite einen Eintrag aus einer Datenbank zu entfernen.

    PHP-Code:
    $request $dbhandler->query("DELETE FROM `mailboxlist` WHERE `boxname` = 'testbox'");
    #$request = $dbhandler->query("DELETE FROM `mailboxlist` WHERE `boxname` = '".$boxname."'");
        
    if ($dbhandler->query($request) === TRUE) {
            echo 
    "DB entry removed successfully</br>";
        } else {
            echo 
    "Error removing DB entry: ".$dbhandler->error."</br>";
        } 
    (in der auskommentierten Zeile und in der darüber steht prinzipiell der gleiche Inhalt, nur einmal aus einer (Test-)Variable und einmal als Klartext.

    Es kommt die Fehlermeldung:
    Error removing DB etnry: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1
    Das Kuriose daran ist, dass der Befehl
    Code:
    DELETE FROM `mailboxlist` WHERE `boxname` = 'testbox'
    unter phpMyAdmin durchaus zum gewünschten Ergebnis führt.

    Kann mir vielleicht von euch jemand sagen, wo hier der Fehler liegen könnte?
    Das wäre super nett =)

    Gruß, Gabriel

  • #2
    Finde den Fehler...

    $request = $dbhandler->query("DELETE FROM `mailboxlist` WHERE `boxname` = 'testbox'");
    if ($dbhandler->query($request) === TRUE) {

    Kommentar


    • #3
      Bau das Statement als String zusammen und lass es dir ausgeben, in $boxname steth sicher nicht drin was du erwartest. Und zukünftig: Prepared Statements mit MySQLi oder PDO benutzen.
      [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

      Kommentar


      • #4
        Zitat von erc Beitrag anzeigen
        Finde den Fehler...

        $request = $dbhandler->query("DELETE FROM `mailboxlist` WHERE `boxname` = 'testbox'");
        if ($dbhandler->query($request) === TRUE) {
        Also wenn du das so schreibst, ist es irgendwie logisch, dass es nicht geht
        Danke für den Hinweis.
        Nun klappts natürlich mit

        Code:
        $request = "DELETE FROM `mailboxlist` WHERE `boxname` = 'testbox'";
        	if ($dbhandler->query($request) === TRUE) {
        Zitat von chorn Beitrag anzeigen
        Und zukünftig: Prepared Statements mit MySQLi oder PDO benutzen.
        MySQLi wurde mir vom Server (testweise ein XAMPP) auch schon entgegengeworfen, aber verstanden hab ich das bislang nicht :/

        Kommentar


        • #5
          Prepared Statements sind im Grunde ganz einfach, hier ein Beispiel:

          PHP-Code:
          <?php

              
          // connect

              
          $PDO = new PDO'mysql:dbname=test;host=localhost''root''' );
              
          $PDO->setAttributePDO::ATTR_DEFAULT_FETCH_MODEPDO::FETCH_OBJ );
              
          $PDO->query'SET NAMES "utf8"' );
              
              
          // create
              
              
          $Create $PDO->prepare('
                  CREATE TABLE IF NOT EXISTS test123( `id` integer primary key, `get` text )
              '
          );
              
              
          $Create->execute();
              
              
          print_r$Create->errorInfo() );
              
              
          // insert 
              
              
          if( !empty( $_GET'test' ] ) ){
              
                  
          $Insert $PDO->prepare('
                      INSERT INTO test123( `id`, `get` ) VALUES( ?, ? )
                  '
          );
                  
                  
          $Insert->execute( array(
                      
          time(),
                      
          $_GET'test' ]
                  ) );
                  
                  
          print_r$Insert->errorInfo() );
                  
              }
          [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

          Kommentar

          Lädt...
          X