2011-06-15 108 views
0

我遇到问题,找不到帮助。当我删除ORDER BY和LIMIT addtions时,这个查询工作正常。但是对他们来说,它会导致“调用一个非对象的成员函数execute()” - 错误。使用LEFT或INNER JOIN没有区别。MySQL:在使用ORDER BY时UPDATE和JOIN查询出错

$sql = "UPDATE tasks JOIN service 
ON tasks_account_id = service_id 
SET `tasks_status` = 'prog' , 
tasks_user = '".$user."' 
WHERE `tasks_status` = 'free' AND `service_besetzt` = '0' 
ORDER BY `tasks_client_date` ASC, `tasks_id` ASC 
LIMIT ".$limit.""; 
$result = $db->prepare($sql); 
$result->execute(); 

有人想法吗? 谢谢!

+0

你可以在你的代码中添加一个echo($ sql)并在这里发布结果。这会帮助我们帮助你。 – nfechner 2011-06-15 18:34:01

回答

4

问题是您使用多表UPDATE和ORDER BY和LIMIT子句不能与它一起使用;然而,他们与单表UPDATE更好地工作。请参阅http://dev.mysql.com/doc/refman/5.0/en/update.html的第2段。

+0

该死的:) 非常感谢。 – Crayl 2011-06-15 18:43:39

+1

切换到Postgres的另一个原因。 – 2013-08-30 14:52:33

2

$db->prepare($sql)返回null。 :)

也许准备方法不能处理LIMIT/ORDER BY ...这是有道理的,因为你不能排序UPDATE查询。