即使命名了params,使用“bindParam”也要求我知道调用存储过程时的顺序参数。
有没有办法:
调用存储过程并在构建语句时,不必知道参数的顺序
或从语句或PDO对象中获取存储过程所需参数的名称和顺序?
答案 0 :(得分: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存储过程以了解它所期望的参数,或者如何在proc中使用它们。你必须至少知道自己的代码。