Enlazando un número desconocido de parámetros usando mysqli

Estoy tratando de hacer una búsqueda en una tabla, algo como esto: http://www.phpjabbers.com/free-scripts/mysql-search-table/search.php

Descubrí que podía concatenar una cadena dependiendo del formulario de búsqueda $ _GET para poder consultarlo luego de obtener los parámetros:

$query = "SELECT * FROM table WHERE status = 1" if($_GET['param1']{ $query = $query." AND param1 = ?"; } $stmt = $mysqli->prepare($query); 

Eso sería perfecto si no tuviera que agregar:

 $stmt->bind_param('i',$_GET['art']); 

Estaba siguiendo las instrucciones de esta publicación: https://stackoverflow.com/a/11152781/679333 , pero la parte comodín no funcionó. En lugar de ese ciclo, hice referencia a las variables cuando las inserté en la matriz:

 array_push($user_terms, &$_GET['var']); 

Funciona, pero ahora recibo una advertencia “Deprecated: Call-time pass-by-reference was obsoleto”.

No quiero ignorar la advertencia porque leo Call-time pass-by-reference ahora ha sido eliminado de PHP.

Un poco descuidado, pero hace el trabajo.

 function refValues($arr){ if (strnatcmp(phpversion(),'5.3') >= 0) //Reference is required for PHP 5.3+ { $refs = array(); foreach($arr as $key => $value) $refs[$key] = &$arr[$key]; return $refs; } return $arr; } $params = array(); $query = "SELECT * FROM table WHERE status = 1"; // Iterate over your paramters from $_GET foreach ($_GET as $k => $v) { if(!empty($v) { $query .= " AND $k = ?"; $params[$k] = helper::sanitize($v); } } // After you get through all your params... $stmt = $mysqli->prepare($query); // Bind em. call_user_func_array(array($stmt, 'bind_param'), refValues($params)); 

Eso debería hacerlo, aunque nunca antes lo había hecho con mysqli. Déjame saber como funciona eso.