Я следил за многими записями на форумах.
И у меня есть два разных способа создания массива для привязки, но почему первый способ не работает?
<?php
class BindParam{
private $values = array(), $types = '';
public function add( $type, &$value ){
$this->values[] = $value;
$this->types .= $type;
}
public function get(){
return array_merge(array($this->types), $this->values);
}
}
class db
{
....
$stmt = $conn->prepare(@"SELECT xy FROM xx WHERE yy = ? AND zz = ?");
$bindParam = new BindParam();
$typ ="";
$par;
for( $i = 0; $i < count($params); $i++)
{
$bindParam->add($params[$i][0], $params[$i][1]);//for example 1
$typ .= $params[$i][0];//for example 2
$par[] = $params[$i][1];//for example 2
}
echo "Example1: ";
print_r($bindParam->get());
echo "<br>Example2: ";
$bind_names[] = $typ;
for ($i=0; $i<count($par);$i++)
{
$bind_name = 'bind' . $i;
$$bind_name = $par[$i];
$bind_names[] = &$$bind_name;
}
print_r($bind_names);$return = call_user_func_array(array($stmt,'bind_param'),$bind_names);
//$return = call_user_func_array(array($stmt,'bind_param'),$bindParam->get());
echo "<br>Binding return: ".$return;
.
.
.
}
вывод для примера1:
Пример1: Array ([0] => ss [1] => test [2] => test)
Пример 2: Массив ([0] => ss [1] => test [2] => test)
Обязательный возврат: 1
вывод для примера2:
Пример1: Array ([0] => ss [1] => test [2] => test)
Пример 2: Массив ([0] => ss [1] => test [2] => test)
Предупреждение: параметр 2 для mysqli_stmt :: bind_param () должен быть ссылкой, значение указано в …
Обязательный возврат:
закомментированный код (// $ return = (example2)) не работает.
Задача ещё не решена.
Других решений пока нет …