PDO绑定参数而不必列出:查询中的var

时间:2017-07-19 12:56:32

标签: php pdo

我正在为我的数据库类创建一个抽象。

一个方法用于调用过程,它接受proc名称和变量数组。

问题在于,通常使用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

但是,上面的代码不起作用。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

例如我有函数getCountry

mysql> call getCountry('ua');
+----+------+
| id | name |
+----+------+
|  3 | ua   |
+----+------+

我使用下一个代码

$pdo = new PDO('mysql:host=localhost;port=3306;dbname=test', 'root');
$s = $pdo->prepare('CALL getCountry(:p1)');
$params = [':p1' => 'ua'];
$s->execute($params);
$result = $s->fetchAll(PDO::FETCH_ASSOC);
var_export($result);

为我提供了下一个结果:

array (
  0 => 
  array (
    'id' => '3',
    'name' => 'ua',
  ),
)

我希望你能做同样的事情......