0

首先,我是 Web 开发的新手,很抱歉,如果这是一个愚蠢的问题,我有一个数组,数组的键是需要在数据库中更新的记录的 id,我提供了下面的代码创建查询并使用 mysql 事务来运行查询(因为应该一起更新几条记录)。当我使用命令行运行生成的查询时,它工作正常,但使用 php 代码不!

生成查询的代码:

$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 连接,并且......因为我相信它们很好,但如果有必要,我也可以包括它们。

提前致谢

4

2 回答 2

2

使用 MySQL 函数不支持多个查询。您需要分解交易:

$sql1 = UPDATE `project` SET `type`='project1' WHERE `id`=1;
$sql2 = UPDATE `project` SET `type`='project2' WHERE `id`=2;

但是,您可以使用mysqli_mutli_query或在另一个答案PDO中提到

于 2012-11-21T01:20:04.177 回答
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;
}
于 2012-11-21T01:20:05.717 回答