使用 php PDO 调用多个存储过程

Posted

技术标签:

【中文标题】使用 php PDO 调用多个存储过程【英文标题】:Call multiple Stored procedures with php PDO 【发布时间】:2012-03-07 22:23:24 【问题描述】:

我正在使用 PDO 访问我的数据库,并且我有两个存储过程。 现在,我执行调用程序,它工作正常,如下所示:

$q = $db->prepare("CALL sp1();");
$q->execute;
//parsing results here...

$q->closeCursor(); 

$q2 = $db->prepare("CALL sp2();");
$q2->execute;
///parsing results here...

我想同时调用两个程序准备,所以我尝试了类似的东西 -

$q = $db->prepare("CALL sp1(); CALL sp2()");
$q->execute;

但这只是调用和执行一个存储过程,而不是两者。 有没有办法同时使用和运行多个程序?

【问题讨论】:

底层 mysql 驱动程序不允许在单个查询调用中发出多个查询。这是防止某些形式的 SQL 注入的安全措施。即使您使用的是 PDO,这仍然适用。 真的,如果它们必须一起运行,最好的做法是创建另一个过程,在事务本身中调用它们。 【参考方案1】:

一个查询只能运行一个存储过程。

如果您仍然只需要运行一个查询,我建议您编写另一个存储过程,它会一个接一个地调用它们。

【讨论】:

以上是关于使用 php PDO 调用多个存储过程的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP PDO 调用 MySQL 存储过程 [重复]

使用 PDO 从 PHP 调用存储过程到使用 INPUT 参数的 MYSQL Server

从 PHP PDO 调用 SQL 存储过程

使用 PDO 调用带有 Out 参数的存储过程

PHP 7和MSSQL PDO:使用输入和输出参数调用存储过程

php pdo调用SQLServer存储过程无法获取返回结果