我在使用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