#php #mysql
#php #mysql
Вопрос:
INSERT INTO expense (date,desc,price,out,method)
VALUES ('$time','$desc','$price','$out','$method');
Что не так в инструкции MySQL выше? Я проверил все остальные элементы в своем коде, но только это, похоже, глючит.
Я передаю эту инструкцию функции mysql_query() в PHP. Это выдает мне ошибку и не вставляет данные в строку.
Все переменные, указанные выше, также присутствуют.
Итак, в чем может быть проблема?
Комментарии:
1. попытайтесь избежать всех полей, таких как
`date`
2. Как насчет того, чтобы сообщить нам сообщение об ошибке?
3. ошибка в синтаксисе рядом с: ЗНАЧЕНИЯМИ desc,price,out, method)(‘1321196048’, ‘d’,’4′,’1′,’ наличные’
4. Пожалуйста, используйте подготовленные инструкции или экранируйте свои переменные, прежде чем использовать их в запросе
Ответ №1:
desc
является ключевым словом в SQL ( order by `key` desc
). Вы не можете использовать простые слова, которые также являются ключевыми словами в SQL. В этом случае вы должны экранировать desc с помощью `
символа (like `desc`
). date
также является ключевым словом, но MySQL решила разрешить его неправильное использование из-за распространенного использования, прежде чем сделать его ключевым словом. Но не каждый компонент database engine допускает это, поэтому будьте осторожны.
Но хорошей практикой является фактически заключать в кавычки все ключи, даже если это не требуется — таким образом, вы могли бы защититься от добавления ключевых слов в SQL, которые нарушили бы ваши запросы.
Ответ №2:
‘date’ — это ключевое слово MySQL (для типа поля даты). Вы должны заключить имя поля с обратными метками, подобными этому:
INSERT INTO expense (`date`,desc,price,out,method)
(Я думаю, что с другими полями все в порядке, но вы могли бы добавить к ним обратные ссылки, если хотите)