Я понимаю, что мы должны передать ссылки на mysqli_stmt_bind_param
. Я делаю следующееmysqli_stmt_bind_param - ожидает ссылок
$ref = refValues($data);
function refValues($arr){
$refs = array();
foreach($arr as $key => $value)
$refs[$key] = &$arr[$key];
var_dump(implode(",", $refs));
return $refs;
return $arr;
}
У меня есть все мои значения в массиве. Я использую указанную выше функцию для получения ссылок. Got the above answer from SO
Мой PHP версия 5.6
Я связывании Params следующим образом.
mysqli_stmt_bind_param($stmt, $types, $ref);
$stmt
это заявление создано через mysqli_prepare
. Она возвращает номер ошибки 0.
$types
не что иное, как $types = str_pad('',count($data),'s');
Я проверил $types
данные также. Он возвращает ожидаемое количество типов. i.e ssssssss
Если у меня возникли ошибки, я получаю следующее сообщение об ошибке.
Only variables should be passed by reference in test.php
Я нашел this решение в формате SO. Я не могу назначить 100 переменных. Я не думаю, что это возможно.
Я нашел другую альтернативу call_user_func_arrary
.
$values = refValues($data);
call_user_func_array(array($stmt, 'bind_param'), $values);
Он возвращает number of bind type doesn't match number of values
. Это странно для меня. Я проверил массив и значения. Оба подсчета совпадают. Я не знаю о внутренней реализации call_user_func_array.
Пожалуйста, дайте мне знать, есть ли способ решить эту проблему эффективно.
Ну, во-первых, 'функция refValues ($ обр) {' создает копию data' – Xorifelse
'$ @Xorifelse Пожалуйста, см. обновленную ссылку. 34 ответа на ответ. Разве это не создает ссылки? –
В вашем коде '$ ref' - массив (значение), содержащий ссылки. –