2016-10-14 9 views
0

の上に私はFileMakerの表を更新しようとしていますが、このエラーを取得しています:
警告:odbc_exec():SQLエラー:[ファイルメーカー] [ファイルメーカー] FQL0001 /(1:90):ありクエリの構文に誤り、CでSQLExecDirectの中のSQL状態42000:。...更新FileMakerの表ODBC

ここでは私のコードです:

$conn = odbc_connect("DSN=Server;Database=FM_File;UID=odbc;PWD=1234", "odbc", "1234"); 
$result = odbc_exec($conn, "SELECT ID_FM, Street FROM Table WHERE Street LIKE '%AVENUE%'"); 

while ($row = odbc_fetch_array($result)) { 

    $ID_FM = $row["ID_FM"]; 
    $Street = $row["Street"]; 

    $Street_neu = str_replace("AVENUE", "AV", $Street); 

    $update = "UPDATE Table SET Street='$Street_neu' WHERE ID_FM=" . $ID_FM;  
    $data_update = odbc_exec($conn, $update);  
}  
odbc_close($conn); 

はあなたに感謝します!

答えて

0

誤った構文があります。私は文字列値で$が嫌いですが、これはおそらくOKです。 SQL文でTableという表を使用することはできません。これは予約語です。私は名前を変更することをお勧めします。あなたができない場合は、それを脱出しよう: - $ {} reserveword

"SELECT ID_FM, Street FROM \"Table\" WHERE Street LIKE '%AVENUE%'" 

"UPDATE \"Table\" SET Street='$Street_neu' WHERE ID_FM=" . $ID_FM; 

ファイルメーカーも予約語のための独自の表記法を使用しています。私はそれがそのSQLのバージョンに当てはまるとは思わないが、もう1つが失敗した場合に試すことができる。

+0

あなたの答えはニコライ・カントに感謝する。しかし、テーブル名は単なる例に過ぎませんでした。その間に解決策を持ってください。特殊文字のために 'addslashes'を使うのを忘れてしまいました。ありがとうございます – Erik

+0

を参照してください。混乱を避けるために、例でmyTableまたはsampleTableを使用することをお勧めします。 –