2016-08-09 59 views
3

Ich möchte alle Parameter im Array übergeben und sie dann nacheinander übergeben.Übergeben Sie alle Parameter als Array PHP mysqli query?

Meine Suche:

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 

Ist es möglich, wie passieren zu folgen?

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

Vielen Dank im Voraus.

+3

Ersetzen Sie die 'OR'-Klauseln durch' IN'. Es wäre dann einfach zu handhaben. – 1000111

+0

Nein es ist nicht über einzelne Spalte, es ist über mehrere Parameter –

+0

Können wir den Code von getAll bekommen? Sie sollten auch Ihre Frage neu schreiben, die Leute scheinen nicht zu verstehen, was Sie eigentlich fragen. – AntoineB

Antwort

-2

können Sie schreiben diese

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

Müssen mehrere Parameter nicht mehrere Werte übergeben –

1

Ab PHP 5.6 können Sie ein verwenden splat operator:

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

Wenn Ihre PHP-Version nicht neu ist, dann call_user_func_array() können auf diese Weise verwendet werden:

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

aber wie Sie sehen können, ist die erste Version viel besser, nicht zu erwähnen, dass alle PHP-Ve unter 5.6 sind bereits veraltet - daher rate ich Ihnen dringend zum Upgrade.