Я хочу сделать myqsli_stmt_bind_param
, используя call_user_func_array()
, потому что у меня есть динамические значения, которые должны быть переданы в запрос.
Сначала я попытался просто поставить мой $bind_params[] = [$type, $value]
(без &) как второй параметр call_user_func_array()
. И во второй попытке я помещаю свой $bind_params[] = [&$type, &$value]
в качестве второго параметра call_user_func_array()
.
Моя первая пробная версия это (без &):
// To store all collected type into $bind_params[].
$bind_params = array($bind_params_1);
$count = count($bind_params_2);
// To store the all values into $bind_params[].
// $bind_params_2[] is collected $_POST values.
for ($i=0; $i < $count; $i++) {
$bind_params[] = $bind_params_2[$i];
$i++;
}
// Doing $stmt->bind_params($bind_params_1, $bind_params_2).
call_user_func_array(array($stmt, "bind_param"), $bind_params);
$stmt->execute();
Если я запустил код выше, это будет выдает предупреждение и ошибку:
Предупреждение: параметр 2 для mysqli_stmt :: bind_param () должен быть ссылкой, значение указано в C: \ xampp \ htdocs \ dashboard \ x \ xx \ xxx \ xxxx \ xxxxx \ gb_daftar_usulan. php в строке 571
Неустранимая ошибка: вызов функции-члена fetch_asso c () для логического значения в C: \ xampp \ htdocs \ dashboard \ x \ xx \ xxx \ xxxx \ xxxxx \ gb_daftar_usulan. php в строке 584
И тогда мое второе испытание выглядит так (с помощью &):
// To store all collected type into $bind_params[].
$bind_params = array(&$bind_params_1);
// $bind_params_2[] is collected $_POST values.
$count = count($bind_params_2);
// To store the all values into $bind_params[].
for ($i=0; $i < $count; $i++) {
$bind_params[] = &$bind_params_2[$i];
$i++;
}
// Doing $stmt->bind_params($bind_params_1, $bind_params_2).
call_user_func_array(array($stmt, "bind_param"), $bind_params);
$stmt->execute();
Второй код дает правильный результат для меня. Я нашел этот подход отсюда: ({ ссылка }).
Почему это произошло?
Что именно &
в &$bind_params_1
и &$bind_params_2
значит?
Почему мое первое испытание дало предупреждение и ошибку?