我正在为我的数据库类创建一个抽象。
一个方法用于调用过程,它接受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
但是,上面的代码不起作用。有没有办法做到这一点?
答案 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',
),
)
我希望你能做同样的事情......