User 13204940 Ответов: 0

Передача по ссылке в 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() или -&ГТ;закрыть().

Что я уже пробовал:

Проходя мимо справочной, заглядываю в интернет примерно на полчаса

0 Ответов