call_user_func_array & quot; не работает & quot; с bind_param при передаче массива уже в переменной

у меня возникли проблемы с использованием call_user_func_array в этом коде

$stmt=$mysqli->prepare($query);
$txt=array('ii',1,1);
call_user_func_array(array($stmt,"bind_param"),$txt);
$stmt->execute();
$result=$stmt->get_result();
while ($row = $result->fetch_array(MYSQLI_ASSOC)){
$r[$count]=$row;
$count++;
}

Использование переменной $ txt дает ошибку с fetch_array ():

Вызов функции-члена fetch_array () для логического значения

Но если я создаю массив в коде, он работает нормально. Пример:

...
call_user_func_array(array($stmt,"bind_param"),array('ii',1,1));
...

1

Решение

Конечно, было бы неплохо узнать, какой тип запроса задействован, но в любом случае работает следующий код:

<?php
error_reporting(E_ALL);
$id=5;
$code = 'GR';
$country='Greece';

$mysqli = new mysqli("localhost", "root", "", "exp");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " .

$mysqli->connect_error;
}
echo $mysqli->host_info . "\n";

if (!($stmt = $mysqli->prepare("INSERT INTO countries VALUES (?,?,?)"))) {
echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

//$stmt->bind_param('iss', $id, $code, $country);

$params = array('iss',$id,$code,$country);
$tmp = array();
foreach($params as $key => $value) $tmp[$key] = &$params[$key];

call_user_func_array( array($stmt, 'bind_param'), $tmp);if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

Код работает только с моим программным обеспечением, когда массив $ params содержит буквы, указывающие тип данных. Также сами параметры должны быть ссылками, а не значениями. Примечание: я позаимствовал код, чтобы превратить значения в ссылки из этот член Stackoverflow.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector