需要有关多个WHERE子句的帮助

时间:2011-01-31 20:26:48

标签: php sql mysql mysql-error-1064

我有一个我想要执行的UPDATE查询。

但在我们更新数据库中的数量之前,需要满足2个条件。

首先,sessions_id()必须与sessionid列中的一个sessionid匹配,其次,产品描述必须与sessionid对应的产品描述匹配。

这就是我所拥有的:

mysql_query(UPDATE cart 
               SET quantity = $q, 
             WHERE sessionid = "'.session_id().'" 
               AND description = $d') or die(mysql_error());

现在,它给了我以下错误:

  

您的SQL语法有错误;
   查看与您的MySQL服务器版本对应的手册,以便在第1行'WHERE sessionid =“bqlbh5rdogbhmq70skhtkbvmb0”AND description = $ d'附近使用正确的语法

但是,我已经直接从W3Schools复制了这个更新查询,所以它必须是正确的,对吧?任何帮助都将不胜感激。

5 个答案:

答案 0 :(得分:3)

由于WHERE语句之前的','符号而发生错误。正确的查询是:

mysql_query( "UPDATE cart SET quantity = " . $q . " WHERE sessionid = "' . session_id( ) . '" AND description = " . $d . "" ) or die( mysql_error( ) );

答案 1 :(得分:1)

删除,

之后的$q(逗号)

答案 2 :(得分:1)

您粘贴的代码格式错误,我怀疑您的应用中使用的代码。

$sql = sprintf(
    "UPDATE `cart` SET `quantity` = '%d' WHERE `sessionid` = '%s' AND `description` = '%s'", 
    $q, 
    session_id(), 
    $d
);
mysql_query($sql);

答案 3 :(得分:0)

看起来应该是这样的:

mysql_query("UPDATE cart SET quantity = $q WHERE sessionid='" .session_id(). "' AND description = '$d'") or die(mysql_error());

答案 4 :(得分:0)

此处您的单引号问题.'" AND description=$d')并且未解析$ d。这将导致错误的SQL查询。 将单引号更改为双引号或仅使用字符串追加.附加$d的值,而不是文字$ d

示例:

$a = 5;
$b = 'a is $a'; // a is $a;
$c = "a is $a"; // a is 5
相关问题