首先,我是网络开发的新手,很抱歉,如果它是一个愚蠢的问题,我有一个数组,数组的键是需要在数据库中更新的记录的ID,我来了下面的代码创建查询并使用mysql事务来运行查询(因为很少有记录应该一起更新)。当我使用命令行运行它时,生成的查询工作正常,但使用php代码NO!
生成查询的代码:
$insert="";
if($run==true){
foreach($result as $key=>$x){
$insert = $insert ."update project set type='".$x."' "."where "."id=".$key.";";
}
//echo $insert;
$insert=$insert ."COMMIT;";
$insert= "START TRANSACTION;". $insert;
代码的结果:
START TRANSACTION;update project set type='project1' where id=1;update project set type='project2' where id=2;COMMIT;
它给我的错误:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'update project set type='project1' where id=1;update project set type='project2'' at line 1
我没有包含sql连接和...因为我相信它们很高,但是如果有必要,我也可以包括它们。
提前致谢
答案 0 :(得分:2)
Multiple queries。您需要分解交易:
$sql1 = UPDATE `project` SET `type`='project1' WHERE `id`=1;
$sql2 = UPDATE `project` SET `type`='project2' WHERE `id`=2;
然而,您可以使用mysqli_mutli_query或另一个回答中提到的PDO
答案 1 :(得分:1)
您可能希望切换到具有直接交易接口的PDO。
$db = new PDO($dsn, $user, $pass);
$stmt = $db->prepare("update project set type= ? where id= ?");
$db->beginTransaction();
try {
foreach ($result as $key => $x) {
$db->execute(array($x, $key));
}
$db->commit();
} catch (PDOException $e) {
$db->rollBack();
throw $e;
}