Я создал простую форму 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
являются пустыми или пустыми
изменения
empty
для проверки пустой переменной ||
вместо or
move_uploaded_file
) $post_image'
). Это ошибка в коде. 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>'; } } } } ?>