繁体   English   中英

PDO-在一个查询中多次插入/更新

[英]PDO - Multiple inserts / updates in one query

我写了一些代码,该代码建立了一个包含多个插入和更新语句的查询,该查询在页面加载结束时执行。 过去工作正常。 我正在开发系统(Ubuntu 14.04,PHP 5.5.3-Ubuntu)上编写类似的优化代码,但是我不再能够在一个PDO查询中运行多个语句:

我所做的

在页面渲染期间,我建立了一条看起来像这样的SQL语句:

insert into <table> (col1,col2,col3) VALUES (?,?,?);
update <table> set col1 = ?, col4 = ? where id = ?;
insert into <table> (col1,col2,col3) VALUES (?,?,?);
...

呈现页面后,我确定没有问题,我使用PDO包装器执行查询。 包装函数的重要部分是

$database = new PDO("mysql:host=<host>;dbname=<dbname>", <user>, <pwd>, 
               array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names 'utf8'"));
$database->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $database->prepare($sql);
$stmt->execute($params);

出于某种原因,尽管$stmt->queryString仍然保留整个查询,但我不再能够一次执行该语句,而是PDO仅执行第一个查询。 谁能帮助我解决这个问题。

发现了问题:如果其中一个查询引发异常,PDO会静默失败。 就我而言,第一个查询可以,但是第二个查询抛出完整性约束失败错误,因此看起来只有第一个查询正在运行。

一位智者告诉我: 不要开枪,不要打扰

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM