Доброе утро,
Я использую команду update в php для обновления данных в mysql. Это мой код:
$sql=mysql_query("UPDATE blpublication SET JournalName = '$_POST[journal]', AcceptanceDate = '$_POST[acceptancedate]', PublishedDate = '$_POST[publisheddate]', Comment = '$_POST[comment]'
WHERE JobNo = '$_POST[jobno]'");
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "record Updated";
Он обновляет поле, но это дает мне следующую ошибку. И я не могу понять, почему я получаю эту ошибку. "Ошибка: у вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с" 1 "в строке 1"
Можете ли вы мне помочь в этом
Лучший Zeeshan
Можете ли вы рассказать нам, какой именно вывод $sql
? Кстати, там есть BIG. Вы должны всегда выполнять входные запросы запроса, а именно:
$journal = mysql_real_escape_string($_POST['journal']);
$acceptance_date = mysql_real_escape_string($_POST['acceptancedate']);
$publish_date = mysql_real_escape_string($_POST['publisheddate']);
$comment = mysql_real_escape_string($_POST['comment']);
$job_no = intval($_POST['jobno']); // assuming jobNo is a number
$sql = <<<END
UPDATE blpublication
SET JournalName = '$journal',
AcceptanceDate = '$acceptance_date',
PublishedDate = '$publish_date',
Comment = '$comment'
WHERE JobNo = $jobno
END;
mysql_query($sql);
if (mysql_error()) {
die("Error executing query '$sql': " . mysql_error());
}
echo "record Updated";
Сначала я бы дезактивировал ваш вход. Это может привести к очень неприятным ошибкам, таким как то, что вы испытываете и злонамеренные атаки. Посмотрите SQL Injection.
Я думаю, проблема в том, что вы дважды запускаете mysql_query. В первый раз он работает и возвращает 1 (true), который вы назначаете $sql. Затем вы снова вызываете mysql_query, передавая $sql (что равно 1). Конечно, "1" не является допустимым SQL-запросом, поэтому вы получаете синтаксическую ошибку.
Я искренне согласен с тем, что вы должны дезинформировать эти материалы!
Прежде всего, ваш код подвержен SQL injection, избегайте значений POST:
$journal = mysql_real_escape_string($_POST['journal']);
И чтобы отладить ваш запрос, нам нужен сам запрос. Добавьте оператор echo() перед фактическим выполнением запроса и опубликуйте результат, значения POST могут содержать некоторое неожиданное значение.
Глядя на инструкцию SQL UPDATE
в вашем коде, одна вещь выскакивает на меня. Имя таблицы blpublication
, возможно, вам не хватает 't', т.е. tblpublication
?
Также вы должны действительно дезинфицировать свой ввод, иначе вы станете жертвой SQL-инъекции.
Подобно следующему post, я считаю, что когда у вас есть какой-либо синтаксис объектов или массивов, вам нужно вставить фигурные скобки.
SET JournalName = '${_POST[journal]}'
edit: и да, как указывали другие, вы рискуете использовать SQL-инъекцию.
Ваш общий синтаксис UPDATE выглядит нормально, за исключением очевидных возможностей инъекции, но вам нужно вывести $sql. У одной из ваших переменных, вероятно, есть цитата в ней или какая-то другая проблема вроде этого....
Попробуйте объединить значения $_POST. Im не уверен, возможно ли включение их без цитирования ключа?
$sql= mysql_real_escape_string("UPDATE blpublication SET JournalName = '".$_POST['journal']."', AcceptanceDate = '".$_POST['acceptancedate']."', PublishedDate = '".$_POST['publisheddate']."', Comment = '".$_POST['comment']."'
WHERE JobNo = '".$_POST['jobno']."'");
$result = mysql_query($sql);
Примечание: команды mysql_ * обесцениваются. Вы должны перейти на mysqli_ *.