php
  • mysql
  • 2016-08-02 15 views 0 likes 
    0

    Im Versuch, eine einfache UPDATE Abfrage auszuführen:UPDATE Syntax in MySQL 5.7

    UPDATE students SET enterTime = '".$enterTime."' WHERE s_id = '".$s_id."'; UPDATE timeLimit SET listed = listed + 1 WHERE enterTime = '".$enterTime."' AND building = '".$building."';" 
    

    Es funktioniert gut in MySQL-Version 5.1, mein Server MySQL-Version 5.7 aktualisiert wurde, und ich erhalte die folgenden Fehler:

    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 'UPDATE students SET enterTime = '09:00' WHERE ' at line 1 BEGIN; UPDATE students SET enterTime = '09:00' WHERE s_id = '312433931' ; UPDATE timeLimit SET listed = listed + 1 WHERE enterTime = '09:00' AND building = '2'; UPDATE timeLimit SET listed = listed - 1 WHERE enterTime = '08:00' AND building = '2'; COMMIT;

    PHP-Code:

    function update_time_for_student($student,$enterTime,$oldTime){ 
        $s_id = $student['s_id']; 
        $building = $student['building']; 
        $query = "BEGIN; UPDATE students 
           SET enterTime = '".$enterTime."' 
           WHERE s_id = '".$s_id."' ;    
           UPDATE timeLimit 
           SET listed = listed + 1 
           WHERE enterTime = '".$enterTime."' AND building = '".$building."'; 
           UPDATE timeLimit 
           SET listed = listed - 1 
           WHERE enterTime = '".$oldTime."' AND building = '".$building."'; COMMIT;"; 
        if (mysql_query($query)){ 
         $fullName = $student['fname']." ".$student['lname']; 
         send_email($student['email'],$enterTime,$fullName,$s_id); 
         header("Location:/index.php?d=1"); 
        } else { 
         echo mysql_error(); 
         echo "<br/>"; 
         echo $query; 
         //header("Location:/index.php?d=3"); 
        } 
    } 
    

    Vielen Dank für Ihre Hilfe!

    +0

    Diese Abfrage phpMyAdmin oder mysql cli läuft – MuthaFury

    +0

    Aus dem Fehler, scheint es, wie Sie die Abfrage sind Looping, versuchen Sie überprüfen Ihre Looping – MuthaFury

    +0

    Wie beurteilen Sie die Abfrage (PHP-Code) laufen? –

    Antwort

    1

    Option-1

    Versuchen Sie, die Linien in mehrere PHP-Anweisungen zu brechen:

    $query = "BEGIN"; 
    mysql_query($query) or die (mysql_error()); 
    
    $query = "UPDATE students SET enterTime = '".$enterTime."' WHERE s_id = '".$s_id."';"; 
    mysql_query($query) or die (mysql_error()); 
    
    $query = "UPDATE timeLimit SET listed = listed + 1 WHERE enterTime = '".$enterTime."' AND building = '".$building."';"; 
    mysql_query($query) or die (mysql_error()); 
    
    $query = "COMMIT"; 
    mysql_query($query) or die (mysql_error()); 
    

    Option-2

    Sie brauchen multi_query stattdessen zu verwenden. Dokumente here

    Hinweis: mysql_ * Befehle sind veraltet und in PhP7 entfernt. Verwenden Sie stattdessen mysqli oder PDO. Siehe die akzeptierte Antwort here

    +0

    Mein Code sieht wie folgt aus: https://docs.google. com/document/d/14sIJUfwbGGzLQAVxOf5JCU6FO4zpPhMBu2sB_h4TiuM/edit? usp = sharing Ich bekomme den folgenden Fehler in der Zeile 53 (im Code rot hervorgehoben) ** Parse Fehler: Syntaxfehler, unerwartet T_VARIABLE ** – user3617337

    +0

    Sie fehlen 'Semikolon 'für vorherige Zeile. 'mysql_query ($ query) oder sterben (mysql_error())' -> 'mysql_query ($ query) oder sterben (mysql_error());'. Ich habe meine Antwort auch bearbeitet !! – Tamil

    Verwandte Themen