Невозможно использовать call_user_func_array в объекте mysqli_stmt

Я пишу класс оболочки для MySQLi. Там я пишу функцию, чтобы принять запрос и переменное количество параметров, где я могу вызвать mysqli_stmt::bind_param . Вот код:

 <?php class DbHelper { .... public function Execute($query, $params){ $this->open(); # Opens a connection to the database using MySQLi API $stmt = $this->mysqli->prepare($query); try{ $result = call_user_func_array(array($stmt, 'bind_param'), $params); } catch(Exception $ex){ # Handle Exception } } .... } ?> 

Вот как я вызываю функцию:

 <?php $db = new DbHelper(); $params = array('i', $stateID); $result = $db->Execute('SELECT * FROM mst_cities WHERE State_ID = ?', $params); ?> 

Когда я запускаю код, я получаю предупреждение:
Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in......

Что мне делать?

Solutions Collecting From Web of "Невозможно использовать call_user_func_array в объекте mysqli_stmt"

Из документов :

Примечание .

Следует соблюдать осторожность при использовании mysqli_stmt_bind_param () в сочетании с call_user_func_array (). Обратите внимание, что mysqli_stmt_bind_param () требует передачи параметров по ссылке, тогда как call_user_func_array () может принимать в качестве параметра список переменных, которые могут представлять ссылки или значения.

В комментариях есть некоторые обходные пути, например, см. Это :

 call_user_func_array(array($stmt, 'bind_param'), refValues($params)); 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; }