2017-01-28 4 views
3

Halten Sie diese Warnung erhalten:SQL-Anweisung UPDATE Fehler mit SQL-Fehler

Warning: odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Syntax error in string in query expression '' WHERE id = 86'., SQL state 37000 in SQLExecDirect

egal, wie ich diesen SQL UPDATE-Befehl bearbeiten:

$sqlU = "UPDATE inv20152016 
     SET coNo = '$coNo', cusNo = '$cusNo', rcvTech = '$rcvTech', 
      rcvLoc = '$rcvLoc', rcvDate = '$rcvDate', rcyTech = '$rcyTech', 
      rcyLoc = '$rcyLoc', rcyDate = '$rcyDate', rtnTech = '$rtnTech', 
      rtnLoc = '$rtnLoc', rtnDate = '$rtnDate', cusInvNo = '$cusInvNo', 
      notes = '$notes 
     WHERE id = '$rcyId'"; 
    if (!$rs=odbc_exec($conn,$sqlU)) { 
     echo '<br />Error UPDATE\'ing new record: (' . $sqlU . ')<br />'; 
     goto end; 
    } else { 
     echo '<br />RECORD successfully UPDATE\'d in database.recycle20152016<br />'; //$sqlUpdate<br />; 
     header('location: searchDb.php'); 
     exit(); 
    } 

Nach dem Versuch UPDATE vorzulegen ich die folgenden zurückgegeben bekommen die einreichen Seite:

Error UPDATE'ing new record: (UPDATE inv20152016 SET coNo = '658454', cusNo = '3282', rcvTech = 'Dave Phillips', rcvLoc = 'Sparington', rcvDate = '2016-11-15', rcyTech = 'Melo Hazak', rcyLoc = 'Wildmere', rcyDate = '2016-02-16', rtnTech = 'Dave Phillips', rtnLoc = 'Sparington', rtnDate = '2016-02-25', cusInvNo = '', notes = ' WHERE id = 86)

Es scheint, als ob alle UPDATE vars wie erwartet, einschließlich der 0.123.in der WHERE-Klausel. Ich habe mit dem Zitat und dem Abstand zwischen den Vars ohne Veränderung gespielt. Ich habe überprüft, dass die Datentypen im ACCESS-Backend mit den Daten übereinstimmen, die für das Update gedrückt werden.

Irgendwelche Ideen, warum diese UPDATE-Anweisung möglicherweise nicht funktioniert?

+0

Wenn Sie den Code lesen können, können Sie den Code debuggen – RiggsFolly

+1

Interessanterweise Ihre 'WHERE' Klausel * id * Wert wird in Anführungszeichen eingeschlossen, aber nicht in zurückgegebenem SQL. – Parfait

+0

Hier ist eindeutig 'notes =' $ notes 'am Ende fehlt ein einzelnes Zitat –

Antwort

7

Sie haben ein einfaches Zitat ' von der notes = '$notes columnId var.

Versuchen:

$sqlU = "UPDATE inv20152016 
     SET coNo = '$coNo', cusNo = '$cusNo', rcvTech = '$rcvTech', rcvLoc = '$rcvLoc', rcvDate = '$rcvDate', rcyTech = '$rcyTech', rcyLoc = '$rcyLoc', rcyDate = '$rcyDate', rtnTech = '$rtnTech', rtnLoc = '$rtnLoc', rtnDate = '$rtnDate', cusInvNo = '$cusInvNo', notes = '$notes' 
     WHERE id = '$rcyId'"; 
    if (!$rs=odbc_exec($conn,$sqlU)) { 
     echo '<br />Error UPDATE\'ing new record: (' . $sqlU . ')<br />'; 
     goto end; 
    } else { 
     echo '<br />RECORD successfully UPDATE\'d in database.recycle20152016<br />'; //$sqlUpdate<br />; 
     header('location: searchDb.php'); 
     exit(); 
    } 
1

Datum Ausdrücke in octothorpes gewickelt werden müssen:

rcyDate = #2016/02/16#