2013-06-23 3 views
0

Im довольно новичок как для PHP, так и для SQL, но я хочу, чтобы данные, введенные в мою форму, были вставлены в базу данных.Ошибка синтаксиса SQL

Код У меня есть письменные работы, и данные передаются в базу данных, но есть пара вещей не так.

Во-первых, вот код;

<?php 

include "credentials.php"; 


function insert_post($cnhost,$cnusername,$cnpassword,$cndatabase,$titlein,$contentin,$comment_optionin) { 


    $connect = mysqli_connect($cnhost,$cnusername,$cnpassword,$cndatabase); 

if (mysqli_connect_errno($connect))  

{ 

    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 

    }else{ 

    echo "Connection Success! <br>"; 


$submitpost_query = mysqli_query($connect,"INSERT INTO blog_posts (title,content,comment_option) VALUES ('".$titlein."','".$contentin."','".$comment_optionin."')"); 

if (!mysqli_query($connect,$submitpost_query)) 
    { 
    die('Error: ' . mysqli_error($connect)); 
    }else{ 
echo "Post submitted."; 


} 
    mysqli_close($connect); 


} 
} 

$title = $_POST["title"]; 
$content = $_POST["content"]; 
$comment_option = $_POST["comment_option"]; 


insert_post($host,$username,$password,$database,$title,$content,$comment_option); 

?> 

Хотя данные передаются в базу данных, так как я хочу получить следующую ошибку;

«Ошибка: У Вас есть ошибка в вашем синтаксисе SQL, проверьте руководство, которое соответствует Вашей версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с„1“в строке 1»

переменного $ comment_option содержит значение 1 или 0, в зависимости от того, какой переключатель выбран, так что эта ошибка может относиться к этой переменной, но эта ошибка SQL одинакова, если значение $ comment_option равно 1 или 0.

Я вижу «Успех соединения! " перед этой ошибкой, но не вижу «Сообщение отправлено», даже если сообщение действительно отправлено. Любые идеи почему?

Как и помогая мне с этой проблемой, я был бы очень благодарен, если бы кто-нибудь мог дать мне некоторые общие советы, чтобы улучшить то, что написал iv. Я noob, поэтому я уверен, что есть несколько вещей, которые можно улучшить здесь!

Большое спасибо!

+0

Распечатайте весь запрос, пожалуйста. 'echo 'INSERT INTO blog_posts (название, [...]' – silkfire

ответ

0

Проблемы здесь:

if (!mysqli_query($connect,$submitpost_query))

Вы пропускание mysqli_query результата, который $submitpost_query к другим mysqli_query, который находится в if заявления.

+0

Хорошо спасибо за быстрые ответы. Я удалил оператор if, и ошибка ушла! Спасибо! Я использовал это, чтобы попытаться проверить, что SQL-запрос работал и данные были вставлены в базу данных.Как бы вы предложили проверить это? – Max

+1

right, '$ submitpost_query' является результатом запроса, вы должны проверить, является ли' $ submitpost_query' ложным или истинным, как 'if (! $ submitpost_query) ' –

+0

Извините, я не видел этот комментарий до того, как я отправил свою версию. Хорошо, спасибо, я попробую это! – Max

0

Проблемы с следующим куском кода если следует вместо следующих если ($ submitpost_query!)

Причины (mysqli_query ($ подключения, $ submitpost_query)!): Вы выполняете возврат объекта снова через функцию mysql_queri, вызывающую предупреждение, недопустимый ресурс, поскольку эта функция только за исключением действительного запроса sql или объекта подключения

+0

Я сделал это так, потому что они использовали это, если бы такое заявление было на W3schools - http://www.w3schools.com/php/php_mysql_insert.asp В последнем блоке кода в нижней части страницы. Как это возможно для меня? – Max

+0

Ахх, я вижу. Хорошо спасибо, я ценю всю помощь! – Max

0

Я знаю, что на ваш вопрос ответили, но я серьезно рекомендую вам дезинфицировать данные POST, прежде чем конкатенировать его в запросе.

+0

Можете ли вы дать мне немного больше информации о том, что вы подразумеваете под этим, пожалуйста? Я буду исследовать то, что вы сказали, но хотел бы, чтобы вы объяснили немного больше относительно того, какой код у меня здесь. – Max

+0

О том, как дезинфицировать ввода пользователя http://stackoverflow.com/questions/129677/whats-the-best-method-for-sanitizing-user-input-with-php И почему вы должны сделать это Http: //en.wikipedia.org/wiki/SQL_injection – SkarXa