2011-06-15 107 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查詢。