#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 в ваших примерах, чтобы избежать путаницы.