Передача по ссылке в PHP вызывает проблемы
Привет,
Заранее у меня был метод, который позволяет пользователю указать соединение mysqli, строку запроса с'?', чтобы избежать SQL-инъекции, и массив параметров. Затем он будет динамически связывать параметры и выводить результат в виде ассоциативного массива.
Теперь я переместил часть привязки параметров в отдельный метод, поскольку добавляю для него дополнительные реализации. Вопрос сейчас в следующем:
call_user_func_array() expects parameter 1 to be a valid callback, first array member is not a valid class name or object
Это и есть метод:
private static function bind_dynamic_params(&$stmt, $params) { // generate the params type string $param_types = str_repeat('s', count($params)); // set the type string as the first parameter $param_bind_names[] = $param_types; // iterate through params for($i = 0; $i < count($params); $i++) { // Create a variable name $param_bind_name = 'bind' . $i; // add the parameter to the variable $$param_bind_name = $params[$i]; // associate the variable as an element in the array $param_bind_names[] = &$$param_bind_name; } // bind params call_user_func_array(array($stmt, 'bind_param'), $param_bind_names); }
Я ищу, чтобы передать объект $stmt по ссылке, так что call_user_func_array может быть вызван на нем, в то время как исходный метод может использовать этот измененный объект.
То, как я пытаюсь это сделать, таково::
1. $соед = новый в mysqli(...); $параметр stmt = $Конн-&ГТ;подготовить($запроса);
2. bind_dynamic_params($stmt, $params);
3. Сейчас продолжать использовать $stmt задано, например -и GT;execute() или -&ГТ;закрыть().
Что я уже пробовал:
Проходя мимо справочной, заглядываю в интернет примерно на полчаса