2016-08-09 59 views
3

我想傳遞數組中的所有參數,而不是一個接一個地傳遞它們。將所有參數作爲數組PHP 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 

在此先感謝。

+3

用'IN'替換'OR'子句。那將很容易處理。 – 1000111

+0

沒有它不是單列,它關於多個參數 –

+0

我們可以得到getAll的代碼嗎?你也應該重寫你的問題,人們似乎不明白你實際要問什麼。 – AntoineB

回答

-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 
+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); 

但是正如你所看到的第一個版本更好,更不用說所有的PHP ve低於5.6的rsions已經過時 - 所以我強烈建議你升級。