2012-11-23 1 views
0

Я пытаюсь обновить строку базы данных через форму POST с помощью web.py, но я получаю синтаксическую ошибку MySQL. Я новичок в Python в целом, так что простите меня за вопрос новичков. Вот код, я бегу:Ошибка с update() с web.py

def Update(webInput): 
     db.update('category', where='category_name=' + webInput.category_name) 
     return; 

Ошибка я получаю

ProgrammingError: (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 'WHERE category_name=' at line 1")

Спасибо

ответ

1

Пожалуйста check the docs для db.update. Правильный вызов будет:

db.update('category', where='category_name = $category_name', vars=webInput, **webInput) 

Предполагая webInput имеет новые данные, которые будут установлены.

$category_name в том месте, где предложение извлекается из vars и дезинфицировано (даже если ваш код работал, он был бы уязвим для SQL-инъекции).

+0

Я думаю, что я просто толстый. Я пробовал следующее: db.update ('category', where = 'categoryID = $ category_id', vars = webInput), и я получаю сообщение об ошибке «У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'WHERE categoryID =' 8 '' в строке 1 "). Я пробовал это без кавычек 'where = category_id = $ category_id, и я получил недействительный синтаксис – RHPT

+1

Предполагается, что запрос на изменение должен изменить значения, вы должны передать значения, которые необходимо обновить в базе данных в качестве аргументов ключевого слова. 'vars' используется только в форматировании предложения' where'. –

0

Похоже, вы забываете, чтобы передать данные, которые вам хотите обновить «категорию».

Try:

db.update('category', where='category_name=' + webInput.category_name, 'new data here') 
+0

Вам не нужно ставить кавычки вокруг строк в базе данных web.py, где содержатся утверждения? Я только начинаю узнавать о web.py –

+0

Новые данные представляют собой поле формы с именем «category_name». Как мне это сделать? Я думал, что это через webInput.category_name – RHPT

 Смежные вопросы

  • Нет связанных вопросов^_^