PDO。两个SELECT,使用BEGIN和COMMIT并获取SQLSTATE [HY000]:一般错误

时间:2014-04-30 15:31:13

标签: mysql pdo

这是查询

 BEGIN; 
 SELECT NumberRenamed, ... FROM 2_1_paidused WHERE CreditAccount = ? AND ...; 
 SELECT NumberRenamed, ... FROM 2_1_paidused WHERE DebitAccount = ? AND  ...; 
 COMMIT;`

...是包含列和条件的长列表。)

并获取SQLSTATE[HY000]: General error

已移除BEGIN;COMMIT;,所有内容均按预期正常运行且无错误。

据我所知,如果有多个SELECT,则需要使用BEGIN;COMMIT;但似乎我错了。那么,这是否意味着允许在没有SELECTBEGIN;的情况下使用多个COMMIT;?或者我的查询不正确?

1 个答案:

答案 0 :(得分:2)

这是四个SQL语句。您不共享任何PHP代码,但显示查询的方式建议您立即将它们启动到单个数据库调用中。显然,running multiple queries in PDO非常棘手 - 不知道你做对了。

在任何情况下,您的交易代码都是多余的:

  • PDO内置了startcommit次交易的功能。无需手动运行命令。
  • 你没有进入数据库,因此交易无论如何都没有任何意义。

我很确定您只需要分别运行两个SELECT查询。


编辑:也许您对BEGIN ... END感到困惑。这是一个完全不同的功能。在MySQL中,您只能在存储例程的主体中使用它。