这个MySql查询语句是否正确?

时间:2010-05-26 09:24:22

标签: php mysql

我想知道这个MySql语句是否会正确执行,

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

如果没有,请指出我错在哪里。

由于

4 个答案:

答案 0 :(得分:1)

我正在使用sql server,但我认为这里的错误是

会话ID

需要

单引号'

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

答案 1 :(得分:1)

我确定你的意思

$this->sessionid

不是

$this->$sessionid

(第二个返回property的值,该名称存储在sessionid中,因此,当$ sessionid为'abcdef'时,它会尝试返回$ this-> abcdef属性的值)。

另外,在'AND中包含所有参数。

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

答案 2 :(得分:0)

对我来说似乎很好。

答案 3 :(得分:0)

正如@praynay所说,我相信你需要在会​​话ID周围引用。

此外,非常非常确定 $this->sessionid本身没有引用字符 ,或者在将其传递给MySQL之前将其正确转义。 (或者更好的是,使用参数化查询。)