Pravin Shedge Ответов: 3

Причина этой ошибки?


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 'll find a job description example for most common jobs. Starting with a sampl' at line 1


Что я уже пробовал:

$photo=$_REQUEST["imagename"];
$email_id=$_REQUEST["email"];
$jtitle=$_REQUEST["jtitle"];
$loc=$_REQUEST["loc"];
$region=$_REQUEST["region"];
$jtype=$_REQUEST["jtype"];
$des=$_REQUEST["des"];
//$cdate = $_REQUEST["date"];
//echo''.$cdate;
$date = date('Y-m-d');
$c =new mySqli("localhost","root","","rjobs");
$sql="insert into post_job_db value('$date','$photo','$email_id','$jtitle','$loc','$region','$jtype','$des')";
if($c->query($sql)==TRUE)
{
echo "Record inserted<script>window.location.assign('home.php');</script>";
}
else
{
echo mysqli_error($c);
//echo "sorry<script>window.location.assign('post_job.php');</script>";
}
$c->close();

3 Ответов

Рейтинг:
1

Richard Deeming

Причина ошибки проста: у вас есть ошибка в синтаксисе SQL. Скорее всего, потому что вы использовали value вместо values В вашем insert заявление.

Но у вас есть более серьезная проблема: ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк / интерполяцию для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

PHP: SQL-инъекция - руководство пользователя[^]


Рейтинг:
1

Patrice T

Цитата:
У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с примером описания задания для большинства распространенных заданий. Начиная с sampl' в строке 1

Из-за того, как вы строите запрос, его синтаксис зависит от содержания переменных, используемых для его построения, у нас нет никакого способа узнать, что не так.
Для целей отладки добавьте
echo $sql;

в вашем коде нужно знать, что такое точный запрос.

Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Рейтинг:
0

GenJerDan

Патрис и Ричард правы. Если вы используете параметризованные запросы, он не будет подавляться текстовым полем, содержащим Апостроф, что и происходит здесь:

syntax to use near 'll find 


Я предполагаю, что " Лл "- это от "я буду", или "оно будет", или что-то в этом роде.