Как вызвать mysqli_stmt с помощью call_user_func_array?

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

class DbHelper{ .... public function Execute($query, $params){ $this->open(); $stmt = $this->mysqli->prepare($query) or die($this->mysqli->error); call_user_func_array(array($stmt, 'bind_param'), $params); // 1 return $stmt->execute() ? $stmt->num_rows : 'ERROR'; } .... } 

Вот код, который я использую для вызова функции:

 .... $conn = new DbHelper(); $params = array('ss', $ID, $i); $conn->Execute('INSERT INTO some_table (ID, `Index`) VALUES (?,?)', $params); .... 

Это дает ошибку:

Предупреждение: Параметр 2 для mysqli_stmt :: bind_param () ожидается как ссылка, значение указано в ..mypath .. \ dbhelper.php on line

В моем другом сообщении (нажмите здесь ) по той же проблеме несколько месяцев назад, некоторые из них предложили мне использовать следующий код:

 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; } 

Повторное использование этого параметра дает ту же ошибку. Если я вызываю такую ​​функцию (добавление и перед параметрами $):

 $conn->Execute('INSERT INTO some_table (ID, `Index`) VALUES (?,?)', &$params); // 2 

Я получаю эту ошибку:

Устаревший: переадресация вызова по времени устарела в ..mypath .. \ save.php on line

В качестве альтернативы, я пробовал это определение для функции DbHelper::Execute :

 public function Execute($query, $params){ $this->open(); $stmt = $this->mysqli->prepare($query) or die($this->mysqli->error); $stmt->{'bind_param'}($params); // 3 return $stmt->execute() ? $stmt->num_rows : 'ERROR'; } 

Вызов этого показывает ошибку как:

Предупреждение: неверный счетчик параметров для mysqli_stmt :: bind_param () в ..mypath .. \ dbhelper.php on line

Где as, счетчик параметров является правильным для bind_param, если функция вызывается правильно.

Версия PHP – 5.3.8.

Любая помощь, пожалуйста?

Solutions Collecting From Web of "Как вызвать mysqli_stmt с помощью call_user_func_array?"