2010-05-26 141 views
0

我想知道是否這個MySQL的語句將被正確執行,這是MySql查詢語句正確嗎?

"SELECT sum(price) FROM products WHERE productid IN (SELECT productid FROM shoppingcart WHERE sessionid=".$this->$sessionid.")" 

如果不是,請給我指點,以我錯在何處。

感謝

+0

我假設你使用PHP,是否正確? – nothrow 2010-05-26 09:33:26

+0

是的,我正在使用它 – 2010-05-26 09:49:34

回答

1

我敢肯定你的意思

$this->sessionid 

$this->$sessionid 

(第二個返回的屬性值,其名稱都存儲在會話ID,因此,當$會話ID是 'ABCDEF'它試圖返回$ this-> abcdef屬性的值)。

另外,在'AND中轉義所有參數。

"SELECT sum(price) FROM products WHERE productid IN (SELECT productid FROM shoppingcart WHERE sessionid='".mysql_escape_string($this->sessionid)."')"; 
+0

+1沒有抓住那一個。 – 2010-05-26 09:33:36

+0

感謝您的糾正 – 2010-06-03 10:43:58

1

我使用SQL服務器,但我認爲錯誤在這裏是

單引號'需要會話ID

 "SELECT sum(price) FROM products WHERE productid IN (SELECT productid 
    FROM shoppingcart WHERE sessionid='".$this->$sessionid."')" 
0

似乎沒什麼問題。

0

正如@praynay所說,我相信你需要引用會話id。

此外,要非常,非常肯定$this->sessionid不會有一個引號字符本身,或者你將它傳遞到MySQL之前正確轉義。 (或者更好的是,使用參數化查詢。)