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.
      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.

      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() );
                  
              }
          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.

          Kommentar

          Lädt...
          X