PHP - ОШИБКА 1064 в MySQL пытается сделать запрос выбора - PullRequest
0 голосов
/ 27 февраля 2019

Я новый пользователь этого сайта.Я пытаюсь выполнить этот простой запрос:

$id_book=$_REQUEST['id_book'];
$date=date("Y/m/d");
$sql="INSERT INTO books(id_book,date) VALUES($id_book,'$date')";
if(!$mysqli->query($sql)){
   die($mysqli->error.". ".$mysqli->errno);
};

, но получил это сообщение об ошибке:

У вас есть ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '' 2019/02/27 ')' в строке 1. 1064

Что я делаю неправильно?Может кто-нибудь помочь мне, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Во-первых, НЕ вставляйте эту переменную $_REQUEST['id_book'] в ваш SQL, см. Как я могу предотвратить внедрение SQL в PHP? и используйте подготовленный оператор.

Вам необходимо использоватьправильный ДАТА формат для MySQL:

$date = date("Y-m-d");

Также date является зарезервированным словом в MySQL, поэтому выберите другое имя для имени столбца или используйте обратные пометки:

// placeholders for prepared statement ?
$sql = "INSERT INTO books(id_book, `date`) VALUES(?, ?)";
0 голосов
/ 27 февраля 2019

Попробуйте преобразовать соответственно строку даты в дату

$sql="INSERT INTO books(id_book,date) VALUES($id_book,str_to_date('$date', '%Y/%m/%d')";

В любом случае вам не следует использовать php var в sql .. вы рискуете для sqlinjection .. во избежание этого взгляните на драйвер msysql дляподготовленное заявление и обязательный параграф

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...