2012-12-07 39 views
0

我正在用一種博客來玩轉。我發現了一個錯誤,當我說:我的php/mysql代碼有什麼問題?

我的PHP如下:

$query = "INSERT INTO articles (articleTitle, articleType, articleText, userID) 
     VALUES('$articleTitle', '$articleType', '$articleText', '$userID')"; 

    $result = mysql_query($query); 

    var_dump($articleTitle); 
    var_dump($articleType); 
    var_dump($articleText); 
    var_dump($userID); 

    var_dump($result); 

    echo mysql_error(); 

我的結果是這樣的:

string 'New News! (Sounds like noo noo's)' (length=33) 
    string 'News' (length=4) 
    string 'NEWS is here! This is Michael Bender reporting on the new news that we now have news! Isn't that exciting news?' (length=111) 
    string '1' (length=1) 
    boolean false 

你在你的SQL語法錯誤;檢查手冊, 對應於您的MySQL服務器版本的正確語法使用 附近的')','新聞','新聞在這裏!這是邁克爾本德報道 新的消息,在線2

那麼爲什麼不接受我的查詢?謝謝!

+1

請勿使用'mysql_ *'系列函數。使用'PDO'(最好)或'mysqli_ *'函數(不太好)。 –

+0

錯誤告訴你錯誤的位置('near s)'),你的錯誤是'正在逃避你的字符串'。在' – Lotzki

+0

右邊前插入\來修復它。對不起,錯過了。感謝您的幫助!我知道這是愚蠢的。 – Bender

回答

3

你必須轉義所有傳遞給mysql_query的變量mysql_real_escape_string。另外,您可能想使用PDO或mysqli。

1

這裏是東西,將打破你的查詢:

字符串「新消息報! (聽起來像野應,野應的)」(長度= 33)

單引號'

您需要在您的查詢使用它們之前逃脫你的價值觀。否則你會Sql Injection

實例的受害者:)對數據

$query = "INSERT INTO articles (articleTitle, articleType, articleText, userID) 
     VALUES('%s', '%s', '%s', %d)"; 

$query = sprintf($query, 
    mysql_real_escape_string($articleTitle), 
    mysql_real_escape_string($articleType), 
    mysql_real_escape_string($articleText), 
    (int) $userID); // assuming your userId is an integer 
0

使用mysql_real_escape_string(,因爲它會阻止你的查詢崩潰,因爲它們含有特殊字符。