1

即使命名参数,使用“bindParam”也需要我知道调用存储过程时应该输入的顺序参数。

有没有办法:

  • 调用存储过程并在编译语句期间,不必知道参数的顺序

  • 或者从语句或 PDO 对象中获取存储过程所需参数的名称和顺序?

4

1 回答 1

0

为什么不按名称绑定参数?

$stmt = $pdo->prepare("SELECT * FROM mytable WHERE n = :num AND z = :zone");

$stmt->execute(array( "zone" => $zone, "num" => $num ));

顺便说一句,我更喜欢简单地通过将数组传递给execute()来传递参数。没有必要使用 bindParam(),这样做也没有任何好处。有参数类型说明符,但如果您阅读 PDO 代码,这些说明符将被忽略,至少在 PDO_MySQL 驱动程序中是这样。


回复您的评论:好的,现在我明白您的问题了。

不,没有办法查询 MySQL 存储过程来了解它需要什么参数,或者你将如何在过程中使用它们。您必须至少了解自己的代码。

于 2013-02-08T22:39:10.313 回答