2013-06-23 110 views
0

對於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,這取決於選擇哪個單選按鈕,因此此錯誤可能指的是此變量,但無論$ comment_option的值是1還是0,此SQL錯誤都是相同的。

我確實看到「連接成功! 「在發生此錯誤之前,即使帖子已實際提交,也沒有看到「已發佈帖子」。任何想法爲什麼?

除了幫助我解決這個問題,如果有人能給我一些改進iv寫作的一般技巧,我將非常感激。我是一個小菜,所以我確定有一些東西可以在這裏改進!

非常感謝!

+0

請打印出整個查詢。 'echo'INSERT INTO blog_posts(title,[...]' – silkfire

回答

0

的問題是在這裏:

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

你傳遞一個mysqli_query結果是$submitpost_query另一個mysqli_query這是在if聲明。

+0

好的感謝您的快速回復。我刪除了if語句並且錯誤消失了!謝謝!我正在使用它來驗證SQL語句是否已經工作並且數據被插入到數據庫中,你會怎麼建議驗證這個? – Max

+1

對,'$ submitpost_query'是查詢的結果,你應該測試'$ submitpost_query'是否爲false或者真如'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