Вставка Symfony DBAL выдает: & quot; Синтаксическая ошибка или нарушение доступа: 1064 & quot;

Я пытаюсь вставить некоторые данные в базу данных, но что-то здесь не так. Не могу понять, что это такое, и я надеюсь, что кто-то сможет сказать мне, что происходит с этим.

Моя таблица выглядит примерно так:

CREATE TABLE IF NOT EXISTS `db_name`.`order` (
`orderID` INT NOT NULL AUTO_INCREMENT,
`order_ordernumber` VARCHAR(200) NOT NULL,
`order_orderweight` INT NOT NULL,
... And other columns as well, but all NULL
ENGINE = InnoDB

Я использую Symfony2-framework и это DBAL-insert здесь:

$conn->insert('order', array(
'order_ordernumber' => $this->orderid,
'order_orderweight' => $this->totalweight
));

«$ this-> orderid» является строковой переменной, а «$ this-> totalweight» является int.

И это дает это сообщение об ошибке:

An exception occurred while executing 'INSERT INTO order (order_ordernumber, order_orderweight) VALUES (?, ?)' with params ["000001", 900]:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order (order_ordernumber, order_orderweight) VALUES ('000001', '900')' at line 1
500 Internal Server Error - DBALException
1 linked Exception: PDOException »

Я могу сделать тот же запрос на чистом SQL, и он работает, этот не делает. Что на земле происходит с этим?

1

Решение

order является зарезервированным ключевым словом в MySQL: http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html

Вы должны использовать обратные кавычки вокруг слова, чтобы предотвратить эту ошибку. Но лучшей рекомендацией будет префикс вашей таблицы.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]