我编写了一些代码,这些代码构建了一个多个insert和update语句的查询,这些语句是在页面加载结束时执行的。它过去正常工作。我正在开发系统(Ubuntu14.04,PHP5.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);由于某些原因,我无法在一次命中中执行该语句,相反,PDO只执行第一个查询,尽管$stmt->queryString仍然保存整个查询。有人能帮我解决这个问题吗。
发布于 2014-10-20 14:48:41
发现问题:如果其中一个查询抛出异常,PDO就会悄然失败。在我的例子中,第一个查询是可以的,但是第二个查询是抛出一个完整性约束失败错误,所以看起来只运行第一个查询。
一位智者刚刚告诉我:,不要射杀信使,打断我的询问
https://stackoverflow.com/questions/26467624
复制相似问题