2010-09-03 127 views
1

我正在運行一個查詢來更新表中的一小組'項目',從PHP。使用「Sequel Pro」運行代碼可以完美地執行它,同時使用mysql在PHP上運行它(「query here」);悲慘地失敗了。MySQL/PHP更新查詢錯誤

查詢有什麼問題嗎?

UPDATE `service_joblocation` 
    SET `in_use` = '1', 
     `in_use_since` = '1283488686', 
     `in_use_currentcount` = `in_use_currentcount`+1, 
     `in_use_historicalcount`= `in_use_historicalcount`+1 
    WHERE `id` = 5 
    LIMIT 1; 

UPDATE `service_joblocation` 
    SET `in_use` = '1', 
     `in_use_since` = '1283488686', 
     `in_use_currentcount` = `in_use_currentcount`+1, 
     `in_use_historicalcount` = `in_use_historicalcount`+1 
WHERE `id`=16 
    LIMIT 1; 

UPDATE `service_joblocation` 
    SET `in_use` = '1', 
     `in_use_since` = '1283488686', 
     `in_use_currentcount` = `in_use_currentcount`+1, 
     `in_use_historicalcount` = `in_use_historicalcount`+1 
    WHERE `id`=18 
    LIMIT 1; 

UPDATE `service_items` SET `checkin_user`='9', `checkin_date`='1283488686', `location`='5' WHERE `id`=576; 
UPDATE `service_items` SET `checkin_user`='9', `checkin_date`='1283488686', `location`='16' WHERE `id`=577; 
UPDATE `service_items` SET `checkin_user`='9', `checkin_date`='1283488686', `location`='18' WHERE `id`=578; 
UPDATE `service_jobs` SET `checkin_date`='1283488686', `checkin_user`='9',`checkin_department`='1',`checkin_client_person`='0', `items_x`=`items_x`+1 WHERE `id`='518' LIMIT 1; 
UPDATE `service_jobs` SET `checkin_date`='1283488686', `checkin_user`='9',`checkin_department`='1',`checkin_client_person`='0', `items_x`=`items_x`+1 WHERE `id`='518' LIMIT 1; 
UPDATE `service_jobs` SET `checkin_date`='1283488686', `checkin_user`='9',`checkin_department`='1',`checkin_client_person`='0', `items_x`=`items_x`+1 WHERE `id`='518' LIMIT 1; 

這是輸出信息...

您的SQL語法錯誤; 檢查對應 你的MySQL服務器版本的 正確的語法使用近「UPDATE service_joblocation SET in_use = '1',in_use_since = '1283488686' 手動在 線2

+0

是否存在重複的'service_joblocation.id'值?如果不是這樣,那麼在最後加上「LIMIT 1」沒有任何價值......爲什麼包含錯誤與之無關的其他UPDATE語句? – 2010-09-03 04:55:51

+0

您的查詢對我來說確實很好。這個問題可能在於你的PHP代碼。你可以張貼嗎? – Mischa 2010-09-03 04:59:09

回答

2

您只能將一條語句傳遞給mysql_query()。

還有其他的功能/方法,例如, mysqli::multi_query()但不適用於舊的mysql擴展。

+0

乾杯:D 我嚇壞了,因爲查詢在應用程序中工作正常..我想它必須分別通過每個查詢。 – ajdi 2010-09-03 08:57:35

0

您可以發佈執行查詢的PHP代碼(我假設你的意思是mysql_query())。查詢對我來說看起來很好看,但我認爲它可能會出現一些不正確的情況,例如無意的引號或大括號。

0

什麼是service_joblocation.in_use和service_joblocation.in_use_since的數據類型?如果它們是數字,請嘗試刪除引號,即

UPDATE `service_joblocation` 
SET `in_use` = 1, 
    `in_use_since` = 1283488686, 
    `in_use_currentcount` = `in_use_currentcount`+1, 
    `in_use_historicalcount`= `in_use_historicalcount`+1 
WHERE `id` = 5 
LIMIT 1;