2011-02-16 226 views
0

我有一堆在我的代碼數據庫調用的。這有什麼錯我的SQL查詢?

其中之一是這樣的:

mysql_query("INSERT INTO coupons (id, retailerName, description, savingsDetails, pictureURL, rating, qrPicture, zipCode, dateAdded, dateExp) VALUES ('$newID', '$retailerName', '$description', '$savingsDetails', '$pictureURL', '0', '$qrPicture', '$zipCode', '$dateAdded', '$dateExp')"); 

所有其他數據庫的完美要求的作品,但是這一次根本不寫入任何數據到表。它出什麼問題了?

+1

一個更多的優惠券網站,哦,不。 – zerkms 2011-02-16 07:11:15

回答

4

檢查從MySQL查詢返回的。

$result = mysql_query($query); 
if ($result === false) { 
    // Prints the query and the mysql error to help you find the problem. 
    die($query.'<br/>'.mysql_error()); 
} 

如果查詢有問題,它會告訴你它是什麼。

mysql_query()成功則返回true和false的錯誤不返回東西查詢。

http://php.net/manual/en/function.mysql-query.php

當使用mysql_query()生產,也要優雅檢查錯誤的返回值,並退出,最好記錄,以便它可以幫助你解決任何問題。

另外,當執行使用用戶輸入的查詢時,請確保使用mysql_real_escape_string()來避免SQL注入,並且將保護包含單引號的輸入,這會破壞當前的查詢。

http://php.net/manual/en/function.mysql-real-escape-string.php

1

檢查從查詢返回的值,找出發生了什麼 -

$result = mysql_query("INSERT INTO coupons (id, retailerName, description, 
       savingsDetails, pictureURL, rating, qrPicture, zipCode, dateAdded, 
       dateExp) VALUES ('$newID', '$retailerName', '$description', 
       '$savingsDetails', '$pictureURL', '0', '$qrPicture', '$zipCode', 
       '$dateAdded', '$dateExp')"); 

if($result) 
{ 
    // Your query succeeded 
} 
else 
{ 
    // Your query failed due to some error 
    die(mysql_error()); 
} 
0

你可以只寫爲mysql_query("INSERT INTO coupons (id, retailerName, description, savingsDetails, pictureURL, rating, qrPicture, zipCode, dateAdded, dateExp) VALUES ('$newID', '$retailerName', '$description', '$savingsDetails', '$pictureURL', '0', '$qrPicture', '$zipCode', '$dateAdded', '$dateExp')") or die(mysql_error());

如果你沒有得到一個錯誤,它意味着它成功了。如果你得到一個錯誤,會直接從MySQL錯誤(所以它應該是相當詳細)。

0

找到問題的另一種方法:記錄您的sql查詢,查看查詢在運行時的樣子。

$str = "INSERT INTO coupons ..."; 

echo $str; 

然後直接嘗試那個查詢到你的數據庫,你會得到不對的東西。