首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP + MySQL transaction+syntax错误

PHP + MySQL transaction+syntax错误
EN

Stack Overflow用户
提问于 2012-11-21 09:13:00
回答 2查看 102关注 0票数 0

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

生成查询的代码:

代码语言:javascript
复制
$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;

代码的结果:

代码语言:javascript
复制
START TRANSACTION;update project set type='project1' where id=1;update project set type='project2' where id=2;COMMIT;

它给我的错误是:

代码语言:javascript
复制
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连接和...因为我相信高百分比,他们是好的,但如果有必要的话,我也可以包括他们。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-21 09:20:06

您可能希望切换到PDO,它具有直接到事务的接口。

代码语言:javascript
复制
$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;
}
票数 1
EN

Stack Overflow用户

发布于 2012-11-21 09:20:04

使用MySQL函数时不支持Multiple queries。您需要分解事务:

代码语言:javascript
复制
$sql1 = UPDATE `project` SET `type`='project1' WHERE `id`=1;
$sql2 = UPDATE `project` SET `type`='project2' WHERE `id`=2;

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13484915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档