Я успешно читаю из 4D, используя PDO, но не пишу в него.
Когда я пытаюсь вставить значения в базу данных, я получаю следующую ошибку:
SQLSTATE [HY000]: общая ошибка: 1248 Не удалось выполнить инструкцию.
Вот мой код:
<?php
$dsn = 'dsn-info';
$user = 'user-info';
$pswd = 'password';
$db = new PDO($dsn, $user, $pswd);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Display PDO errors
$statement = $db->prepare("INSERT INTO order(dealer, customer) VALUES(:dealer, :customer)");
$statement->execute(array(
"dealer" => "Test Dealer",
"customer" => "Test Customer"));
?>
Просто пытаюсь выяснить, есть ли что-то не так с моим утверждением INSERT или нужно что-то изменить на 4D стороне, чтобы дать мне разрешение на запись.
В указанном запросе используется SQL RESERVED WORD:
INSERT INTO order(dealer, customer) VALUES(:dealer, :customer)
Этот запрос использует ORDER
как имя таблицы, однако ORDER
это зарезервированное слово SQL
Если вы посмотрите на эту таблицу в Инспекторе таблиц 4D Structure Editor, вы увидите что-то вроде этого:
Вы не можете получить доступ к этой таблице через SQL, вы должны переименовать ее.
Пожалуйста, смотрите этот технический совет:
Технический совет: рекомендации для имен полей, совместимых с SQL
Других решений пока нет …