我在使用php運行時遇到MySQL查詢問題。當我在PHPMyAdmin或SequelPro中運行它時,它工作正常,但是當它複製到它要運行的PHP文件中時,它停止工作。MySQL事務在PHPMyAdmin中運行時工作,但不能從PHP文件運行時運行
該查詢旨在從多個表中獲取與主鍵鏈接的數據,然後將該數據放入相應的相同表中。我知道這是一件奇怪的事情,但它需要做到這一點。
查詢(如在一個PHP文件中使用)如下:
for($x = 0; $x < count($REQIDARRAY); $x++){
$sql="BEGIN;
INSERT INTO `Request`
SELECT NULL AS `RequestID`, `ModCode`, `RoomID`, `Students`, `Priority`, `Day`, `StartTime`, `Length`, `Semester`, `DateAdded`, `SpecialRequests`
FROM RequestTEMP
WHERE RequestTEMP.RequestID=\"".$REQIDARRAY[$x]."\";
INSERT INTO `Week`
SELECT `WeekNumber` , LAST_INSERT_ID() AS `RequestID`
FROM `WeekTEMP`
WHERE WeekTEMP.RequestID=\"".$REQIDARRAY[$x]."\"';
INSERT INTO `RequestFacilities`
SELECT LAST_INSERT_ID() AS `RequestID` , `FacilityID`
FROM `RequestFacilitiesTEMP`
WHERE RequestFacilitiesTEMP.RequestID=\"".$REQIDARRAY[$x]."\"';
DELETE FROM `RequestTEMP` WHERE RequestID=\"".$REQIDARRAY[$x]."\";
DELETE FROM `RequestFacilitiesTEMP` WHERE RequestID=\"".$REQIDARRAY[$x]."\";
DELETE FROM `WeekTEMP` WHERE RequestID=\"".$REQIDARRAY[$x]."\";
COMMIT;";
$DB->Query('TransferMe' , $sql);
}
我已經證實,$ REQIDARRAY [$ X]將返回正確的值。 當SequelPro運行它,所有的變化是
RequestID=\"".$REQIDARRAY[$x]."\"
到
'RequestID='123'
PHP中的錯誤消息是我會改變:
您在您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的「INSERT INTO Request
SELECT NULL作爲RequestID
,ModCode
,RoomID
,'學生」在列2
MySQL的版本是5.1.60正確的語法手冊。
我不知道是什麼導致了這個問題,我也嘗試了將RequestID硬編碼到PHP文件中,並且它仍然返回相同的錯誤。
任何幫助非常感謝!
'$ DB'是什麼?你確定'$ DB-> Query()'可以處理多個查詢嗎? – Mchl 2012-02-26 18:55:58
'$ DB'是'公共函數查詢($名稱,$ SQL){ \t \t \t // \t查詢數據庫並存儲查詢導致VARIABLE \t \t \t $ \t這 - >結果[$名] = mysql_query($ sql)或死(mysql_error()); \t \t}'。我沒有考慮過mysql_query是否可以接受多個查詢,我會看看 – user1149405 2012-02-26 19:00:27