将所有参数作为数组PHP mysqli查询传递?

时间:2016-08-09 04:59:41

标签: php mysql mysqli

我想传递数组中的所有参数,而不是逐个传递它们。

我的查询:

Select col_1,col_2,col_3,col_4 FROM table WHERE col_1=?i AND col_2 =?s AND col_3=?i AND col_4=?s;

$list = $db_con->getAll($sql, 12,'string',18,'name'); //Currently I've passed

是否可以通过以下方式?

$list = $db_con->getAll($sql, array(12,'string',18,'name')); //Want to do

提前致谢。

2 个答案:

答案 0 :(得分:1)

从PHP 5.6起,您可以使用splat operator

$args = array(12,'string',18,'name');
$list = $db_con->getAll($sql, ...$args); 

如果您的PHP版本不是最新版本,那么call_user_func_array()可以这样使用:

$sql = "Select col_1,col_2,col_3,col_4 FROM tabele WHERE col_1=?i AND col_2 =?s AND col_3=?i AND col_4=?s";
$args = array(12,'string',18,'name');
array_unshift($args, $sql);
$list = call_user_func_array(array($db_con, 'getAll'), $args);

但是你可以看到第一个版本更好,更不用说5.6以下的所有PHP版本都已经过时了 - 所以我强烈建议你升级。

答案 1 :(得分:-2)

你可以写这个

Select col_1,col_2,col_4 FROM tabele WHERE (col_1=?i or col_1 =?i) IN (col_2=?i or col_2 =?i);

$list = $db_con->getAll($sql, 1,2,1,2); //Currently I've passed

$list = $db_con->getAll($sql, array(1,2,1,2)); //Want to do