Обновление таблицы FileMaker через odbc

#php #mysql #filemaker

#php #mysql #создатель файлов

Вопрос:

я пытаюсь обновить таблицу в FileMaker, но получаю эту ошибку:
Предупреждение: odbc_exec(): Ошибка SQL: [FileMaker] [FileMaker] FQL0001 / (1:90): ошибка в синтаксисе запроса., состояние SQL 42000 в SQLExecDirect в C:…

вот мой код:

 $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);
 

Спасибо!

Ответ №1:

Как указано в вашей ошибке, у вас неправильный синтаксис. Мне не нравится $ в строковом значении, но это, вероятно, нормально. Вы не можете использовать таблицу с именем Table в инструкции SQL — это зарезервированное слово. Я бы рекомендовал изменить имя. Если вы не можете, попробуйте избежать этого:

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

и

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

FileMaker также использует свои собственные обозначения для зарезервированных слов — $ {reserveword}. Я не думаю, что это применимо к его версии SQL, но вы можете попробовать, если другой не удался

Комментарии:

1. спасибо за ваш ответ, Николай Кант. Но имя таблицы было просто примером. Тем временем у меня есть решение. Я забыл использовать addslashes , из-за специальных символов. Спасибо

2. Я понимаю. Я бы предложил использовать myTable или sampleTable в ваших примерах, чтобы избежать путаницы.