即使命名参数,使用“bindParam”也需要我知道调用存储过程时应该输入的顺序参数。
有没有办法:
调用存储过程并在编译语句期间,不必知道参数的顺序
或者从语句或 PDO 对象中获取存储过程所需参数的名称和顺序?
即使命名参数,使用“bindParam”也需要我知道调用存储过程时应该输入的顺序参数。
有没有办法:
调用存储过程并在编译语句期间,不必知道参数的顺序
或者从语句或 PDO 对象中获取存储过程所需参数的名称和顺序?
为什么不按名称绑定参数?
$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 存储过程来了解它需要什么参数,或者你将如何在过程中使用它们。您必须至少了解自己的代码。