2013-06-05 123 views
1

我試圖檢索記錄的id號以用作其他變量。我只想要來自另一列中具有特定值的記錄的ID。這裏是我的代碼:

$result = mysql_query("SELECT id FROM order WHERE orderNumber = '$orderNumber'") or die (mysql_error()); 
$id = $result; 

當我測試時,我得到:SQL語法;請查看與您的MySQL服務器版本對應的手冊,瞭解在訂購WHERE orderNumber ='5b0ea3'時使用的正確語法'

任何想法?

+0

是,實際的查詢和錯誤信息,你得到些什麼? – andrewsi

+0

在提問 –

+0

時,一個好主意不是改變你的字段和變量名稱。mysql_ *方法已被棄用,我建議切換到mysqli或PDO,'$ variable'應該在被放入查詢之前進行消毒。如果在運行之前回應它,最終查詢的效果如何? – Pudge601

回答

3
SELECT id FROM order WHERE orderNumber = '$orderNumber 

ORDER是SQL中的預留字;我建議你將該列的名稱更改爲其他名稱。

如果你真的不能,那麼你就可以逃脫與反引號列和表名:

SELECT `id` FROM `order` WHERE `orderNumber` = '$orderNumber' 

而且也看到有關使用mysqli_功能停止的意見 - 他們是不安全的,而被棄用。

1

由於ORDER是一個保留字,您必須在您的sql查詢中使用反引號。之後,使用mysql_fetch_assoc以獲得該ID。

$result = mysql_query("SELECT `id` FROM `order` WHERE `orderNumber` = '$orderNumber'") or die (mysql_error()); 
$row = mysql_fetch_assoc($result); 
$id = $row['id']; 

在另一方面,你應該使用PDOMysqli,該mysql_*功能已被取消,被認爲是不好的做法。

如果你打算繼續使用mysql_query,至少確保用mysql_real_escape_String消毒$orderNumber變量。

-1

使用自定義的數據庫類的查詢功能內置,但SQL查詢工作

​​
相關問題