1
即使命名参数,使用“bindParam”也要求我知道调用存储过程时应该使用的顺序参数。有没有办法用PDO获取存储过程的参数及其顺序?
是否有任何任何方式:
调用存储过程和busilding的声明中,不必知道参数
的顺序,或者得到的名称和顺序从声明或PDO对象存储proc所需的参数?
即使命名参数,使用“bindParam”也要求我知道调用存储过程时应该使用的顺序参数。有没有办法用PDO获取存储过程的参数及其顺序?
是否有任何任何方式:
调用存储过程和busilding的声明中,不必知道参数
的顺序,或者得到的名称和顺序从声明或PDO对象存储proc所需的参数?
为什么不按名称绑定参数?
$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中使用它们。你必须至少知道你自己的代码。
因为订单很重要。如果存储过程被定义为具有输入变量'SomeProc(一个varchar(2),两个varhcar(2))',即使我使用bindParams按名称绑定(例如'bindParam(“one”,...) ,如果它们放入准备语句的顺序与它们在存储过程中出现的顺序不同,它们将作为错误参数发送。在C#中(使用SqlCommand),您不需要知道参数的顺序,SqlCommand对象自己处理它。 – 2013-02-09 20:52:54