在组合这两个sql查询时出错

时间:2012-10-04 17:59:51

标签: php mysql

所以我有这个

$sql_totalbooknumber =  "SELECT SUM(items_counter) FROM probid_categories WHERE items_counter>0 AND `category_id <>355";
$sql_updatebooknumber = "UPDATE `probid_categories` SET `items_counter` = ".$sql_totalbooknumber." WHERE  `category_id` =  '355'";


            if (!mysql_query($sql_totalbooknumber))
  {
  die('Error: ' . mysql_error());
  };
            if (!mysql_query($sql_updatebooknumber))
  {
  die('Error: ' . mysql_error());
  };

不知何故,他们单独工作(如果我注释掉一个或另一个),但当我合并它们时,我得到了这个错误

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'SELECT SUM(items_counter)FROM probid_categories WHERE items_counter&gt; 0和'cate'在第1行附近使用正确的语法

2 个答案:

答案 0 :(得分:2)

$sql_totalbooknumber是包含查询的字符串。不是该查询的结果。

您希望将整数传递给$sql_updatebooknumber,但是您将包含第一个查询的字符串传递给它。

试试这个:

$sql_totalbooknumber =  "SELECT SUM(items_counter) FROM probid_categories WHERE items_counter>0 AND `category_id` <>355";
$result = mysql_query($sql_totalbooknumber);
list($id) = mysql_fetch_array($result);

$sql_updatebooknumber = "UPDATE `probid_categories` SET `items_counter` = ".$id." WHERE  `category_id` =  '355'";
mysql_query($sql_updatebooknumber);

答案 1 :(得分:2)

你正在做一个子查询;你真的需要用括号括起来:

$sql_totalbooknumber =  "SELECT SUM(items_counter) FROM probid_categories WHERE items_counter>0 AND `category_id` <>355";
$sql_updatebooknumber = "UPDATE `probid_categories` SET `items_counter` = (".$sql_totalbooknumber.") WHERE  `category_id` =  '355'";

否则,数据库无法正确解析它。