0

所以我有这个

$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 服务器版本相对应的手册,以在第 1 行的 'SELECT SUM(items_counter) FROM probid_categories WHERE items_counter>0 AND 'cate' 附近使用正确的语法

4

2 回答 2

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);
于 2012-10-04T18:01:07.843 回答
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'";

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

于 2012-10-04T18:02:34.930 回答