2013-02-08 60 views

回答

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中使用它们。你必须至少知道你自己的代码。

+0

因为订单很重要。如果存储过程被定义为具有输入变量'SomeProc(一个varchar(2),两个varhcar(2))',即使我使用bindParams按名称绑定(例如'bindParam(“one”,...) ,如果它们放入准备语句的顺序与它们在存储过程中出现的顺序不同,它们将作为错误参数发送。在C#中(使用SqlCommand),您不需要知道参数的顺序,SqlCommand对象自己处理它。 – 2013-02-09 20:52:54

相关问题