MySql Update查询有效,但不能在php中运行

时间:2012-10-12 17:18:39

标签: php mysql sql-update

当我把它扔进Workbench时,下面的UPDATE查询工作正常,但是当我尝试通过php运行它时什么也没做?任何想法?

我已经尝试将TURNOVERSCORE的表结构作为varchar(100)和Float,table1.item和t2.item是主键。

使用mysql_error时提供错误:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'UPDATE table1 JOIN附近使用正确的语法(SELECT count(*)as cnt,ITEM FROM table2 WHERE'在第2行

$con = mysql_connect("localhost","username","pw");
$turnoverquery = "UPDATE table1 
JOIN (SELECT count(*) as cnt, item FROM table2 WHERE table2.TRANS_DATE BETWEEN DATE_SUB(CURDATE(), INTERVAL 365 DAY) AND CURDATE() GROUP BY item) t2 
ON table1.item = t2.item

SET table1.TURNOVERSCORE=CASE
WHEN t2.cnt/12 < 1 AND table1.CAT = 'E' THEN .05
WHEN t2.cnt/12 >= 1 AND t2.cnt/12 < 4 AND table1.CAT = 'E' THEN .5
WHEN (t2.cnt/12) >= 4 AND table1.CAT = 'E' THEN 1
WHEN (t2.cnt/12) <= 5 AND table1.CAT != 'E' THEN .05
WHEN (t2.cnt/12) >= 6 AND (t2.cnt/12) < 11 AND table1.CAT != 'E' THEN .25
WHEN (t2.cnt/12) >= 11 AND (t2.cnt/12) < 21 AND table1.CAT != 'E' THEN .5
WHEN (t2.cnt/12) >= 21 AND table1.CAT != 'E' THEN 1 END";

mysql_query($turnoverquery);

3 个答案:

答案 0 :(得分:0)

您的括号不匹配。您在子查询中有两次GROUP BY ITEM)

答案 1 :(得分:0)

php查询要求我识别数据库,(当然)。在Workbench中,一旦选择了数据库,就不需要将db.tablename添加到查询中,而如果尚未使用连接字符串识别它,则必须在php中。

答案 2 :(得分:0)

将我的评论转换为答案。

您需要在执行前选择DB,或者将数据库添加到表名中。