【发布时间】:2017-07-19 12:56:32
【问题描述】:
我正在为我的数据库类创建一个抽象。
一个方法用于调用过程,它接受过程名称和一个变量数组。
问题在于,通常使用 PDO 您必须在查询中列出变量(EXEC procName :var1、:var2、:var3),然后才能将变量绑定到这些变量。
我希望能够按顺序绑定数组中的变量,而不必如上面括号中所示列出变量的名称或查询中的变量数量。
这是通常的做法:
$query = $database->prepare("EXEC procName :var1, :var2"); //I must list the amount and names of vars
$query->execute(array(":var1" => $var1, ":var2" => $var2);
这就是我想要的方式:
$query = $database->prepare("EXEC procName"); //I don't have to list the vars here, which will allow for a dynamic amount to be passed in (very reusable)
$query->execute($arrayOfVars); //Binding an array of arguments to the proc
但是,上面的代码不起作用。有没有办法做到这一点?
【问题讨论】:
-
您希望代码如何工作?
$arrayOfVars中的值应该添加到查询的什么位置? -
@u_mulder 按它们所在的顺序。数组中的第一个变量将绑定为过程中的第一个参数。
-
这是可能的,但您必须注意 SQL 注入。见我的文章An SQL injection against which prepared statements won't help
-
@YourCommonSense 我不知道存储过程可以进行注入。
-
任何东西都可以注射。