2010-04-14 2 views
1

не может понять MySQL ошибка:Mysql ошибка в PHP коде

UPDATE static_pages SET order = " Some new data 222222

"Database error: 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 = "

$query = 'UPDATE someTable SET '.$key.' = "'.$value.'"'; 

Вот $ ключ = порядок; $ value = 'новые данные 222222'; Есть такие ключи в таблице: заказ, цены, контакты. Каждое из этих обновлений хорошо, кроме «заказа». Зачем?

+3

Не делайте ... это. [Параметризованные запросы] (http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php/60496#60496) - ваш друг! –

+0

@ jorn-schou-rode может быть, но почему другие ключи работоспособны? – Ockonal

ответ

8

ORDER - зарезервированное слово.

Используйте обратно клещей, чтобы избежать имя столбца:

UPDATE static_pages SET `order` = "; 

Не забудьте ИНЕКЕ, так что вы можете обновить только определенные записи.

UPDATE static_pages SET `order` = " 
WHERE id = 12; 
+0

Да, я полностью забыл о зарезервированных словах. Спасибо. – Ockonal

0

Где ГДЕ

должны использовать ИНЕКЕ с приятелем обновления

+1

У вас нет * have * для использования предложения 'WHERE' в инструкции' UPDATE'. Это очень полезно, если вы не хотите обновлять каждую строку в таблице :) –

1

порядка является ключевым словом в SQL. защитите его кавычками в запросе.

Лучший вариант, чтобы переименовать ваше поле 'порядок'

Если вы не можете, вот одно из возможных решений:

$query = 'UPDATE someTable SET `'.$key.'` = "'.$value.'"'; 
0

использование `вокруг key`

$query = "UPDATE `someTable` SET `$key` = '$value'"; 
0

Вы может помещать зарезервированное словоorders в backticks '`' или переименовать поле.