непредвиденное сообщение об ошибке в php-форме (синтаксическая ошибка SQL)

Я создал простую форму php cms с базой данных, но она не работает должным образом, когда я хочу отправить форму с некоторыми фиктивными данными! Я не знаю, почему это происходит, и я добавил mysqli_error() чтобы получить тип ошибки, с которой я столкнулся, но я получил только это:

У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '', '', '') 'в строке 2

 <?php if (isset($_POST['submit'])){ $post_title = $_POST['title']; $post_date = date('dm-y'); $post_author = $_POST['author']; $post_keywords = $_POST['keywords']; $post_content = $_POST['content']; $post_image = $_FILES['image']['name']; $image_tmp = $_FILES['image']['tmp_name']; if ($post_title=='' or $post_keywords='' or $post_content='' or $post_author=''){ echo '<script>alert("Some fields are missing")</script>'; }else{ move_uploaded_file($image_tmp,"post_images/$post_image"); $insert_query = "INSERT INTO posts (post_title,post_date,post_author,post_image,post_keywords,post_content) VALUES ('$post_title','$post_date','$post_author',$post_image','$post_keywords','$post_content')"; $insert_post = mysqli_query($con,$insert_query); if ($insert_post){ echo '<h3 style="color:green">Post has been added successfully.</h3>'; }else{ echo mysqli_error($con); } } } ?> <form method="POST" action="" enctype="multipart/form-data"> <table width="600" align="center" border="10"> <tr> <td align="center"><h6>Insert Post Title</h6></td> <td align="center"><input type="text" name="title"/></td></br> </tr> <tr> <td align="center"><h6>Insert Post Author</h6></td> <td align="center"><input type="text" name="author"/></td></br> </tr> <tr> <td align="center"><h6>Insert Post Keywords</h6></td> <td align="center"><input type="text" name="keywords"/></td></br> </tr> <tr> <td align="center"><h6>Insert Post Image</h6></td> <td align="center"><input type="file" name="image"/></td></br> </tr> <tr> <td align="center"><h6>Insert Post Content</h6></td> <td align="center"><textarea name="content" cols="10" rows="10"></textarea></td></br> </tr> <tr> <td align="center"><input type="submit" name="submit" value="Submit"/></td> </tr> </table> </form> 

Было бы очень полезно, если вы поделитесь своим решением для этой проблемы … спасибо!

Вам не хватает цитаты перед $ post_image :

 ,$post_image' 

Должно быть:

 ,'$post_image' 

Таким образом, полная инструкция SQL будет тогда:

 $insert_query = "INSERT INTO posts (post_title, post_date, post_author, post_image, post_keywords, post_content) VALUES ('$post_title', '$post_date', '$post_author', '$post_image', '$post_keywords', '$post_content')"; 

Обратите внимание, что вы выполняете задания в этом if :

 if ($post_title=='' or $post_keywords='' or $post_content='' or $post_author=''){ 

Вы должны использовать double == вместо = .

Наконец, ваш код уязвим для SQL-инъекции . Поэтому, пожалуйста, используйте подготовленные заявления с параметрами.

писать, если утверждение таким образом лучше

 // this not always works if ($post_title=='' or $post_keywords='' or $post_content='' or $post_author=''){ echo '<script>alert("Some fields are missing")</script>'; } // yeah much better if (empty($post_title) || empty($post_keywords) || empty($post_content) || empty($post_author)){ echo '<script>alert("Some fields are missing")</script>'; } 

и sql ошибка, скорее всего, из-за этого

 '$post_keywords','$post_content')"; 

$post_keywords и $post_content являются пустыми или пустыми

изменения

  1. Использовать empty для проверки пустой переменной
  2. Использовать || вместо or
  3. Проверьте правильность того, что вы делаете. ( move_uploaded_file )
  4. Будьте осторожны с кавычками ( $post_image' ). Это ошибка в коде.
  5. Улучшить mysqli_error ( if (!$insert_post){ )

Код

 <?php if (isset($_POST['submit'])) { $post_title = $_POST['title']; $post_date = date('dm-y'); $post_author = $_POST['author']; $post_keywords = $_POST['keywords']; $post_content = $_POST['content']; $post_image = $_FILES['image']['name']; $image_tmp = $_FILES['image']['tmp_name']; if (empty($post_title) || empty($post_keywords) || empty($post_content) || empty($post_author)) { echo '<script>alert("Some fields are missing")</script>'; } else { if (!move_uploaded_file($image_tmp,"post_images/$post_image")) { echo "Move Failed"; } else { $insert_query = "INSERT INTO posts (post_title,post_date,post_author,post_image,post_keywords,post_content) VALUES ('$post_title','$post_date','$post_author','$post_image','$post_keywords','$post_content')"; $insert_post = mysqli_query($con,$insert_query); if (!$insert_post){ echo mysqli_error($con); } else { echo '<h3 style="color:green">Post has been added successfully.</h3>'; } } } } ?>