2011-06-01 52 views
0

我正在爲我公司設計一個社交網站,並且正在設置消息系統。mysql SELECT查詢以正確的語法返回錯誤

我在數據庫中有一個名爲「mail」的表,出於某種原因,最簡單的SELECT查詢返回一個錯誤。 這裏是代碼:

$sql = "SELECT * FROM mail WHERE to='$username'"; 
$result = mysql_query($sql) or die(mysql_error()); 

while($row = mysql_fetch_assoc($result)){ 
    $from = $row['from']; 
    $content = $row['content']; 
    echo "<tr><td>$from</td><td>$content</td></tr>"; 
} 

它返回這個錯誤;你的SQL語法有錯誤;檢查對應於您的MySQL服務器版本的手冊,以在第1行'to ='cody''附近使用正確的語法。

我在使用這種類型的查詢之前,這次什麼錯了。

一些注意事項:數據庫連接正常工作,「to」,「from」和「content」是我的「mail」表中的列。

在此先感謝您的幫助

+0

聽起來有可能是用的'$ username'值存在問題 - 或者在PHP你」我應該使用''''而不是'''來處理這類事情(我忘記了)? – FrustratedWithFormsDesigner 2011-06-01 17:37:12

+0

我可以推薦你在開發早期切換到[準備好的查詢](http://www.php.net/manual/en/mysqli.prepare.php)嗎?我寧願你的網站不要被SQL注入攻擊所擊倒。 – user7116 2011-06-02 14:39:45

回答

8

TO是一個保留字。儘量不要使用以下

$sql = "SELECT * FROM mail WHERE `to`='$username'"; 

保留字都可以作爲 標識符,如果你說出來了,如8.2節 ,

Reference

+0

+1,請也請使用[已準備好的查詢](http://www.php.net/manual/en/mysqli.prepare.php)。人們會開始製作你不喜歡的用戶名('OR''='') – user7116 2011-06-02 14:38:40

+0

heh或者像經典的bobby drop table right:P – Loktar 2011-06-02 14:40:08

0

「TO」 也是關鍵字嘗試封裝字段名稱,反引號'

0

我想的發生是由於這個

to='$username' 

$username問題是一個PHP變量,以便檢查出