alestro
@alestro

Как обернуть функцию mysqli_stmt_bind_param?

Вопрос заключается в следующем:
Хочу обернуть функцию mysqli_stmt_bind_param в метод класса базы данных.
сама функция принимает ссылки на переменные, в неограниченном количестве, но как реализовать это в методе bind
(передать в метод неограниченное кол-во аргументов)
Пробовал решить таким образом:
public function bind(){
	$this->bind = mysqli_stmt_bind_param($this->prepare, join(', ',func_get_args()));
}

но выдает ошибку:
mysqli_stmt_bind_param(): Number of elements in type definition string doesn't match number of bind variables in
Таки решил вопрос, если кому интересно ну или мб поможет, собственно вот:
public function bind(){
	$param = func_get_args();
	$type = array_shift($param);
	$refarg = array($this->prepare,$type);
	 foreach ($param as $key => $value):
            $refarg[] =& $param[$key];
	endforeach;
	$this->bind = call_user_func_array("mysqli_stmt_bind_param", $refarg);
}
  • Вопрос задан
  • 510 просмотров
Пригласить эксперта
Ответы на вопрос 3
Ivanq
@Ivanq
Знаю php, js, html, css
Ошибку в запросе читайте! Количество данных аргументов неправильное
Ответ написан
Комментировать
@AlikDex
используйте PDO
Ответ написан
Комментировать
Melkij
@Melkij
PostgreSQL DBA
Вот за это я и не люблю mysqli. Довольно неудобное для использования API. PDO удобнее.

Читайте исходную доку и коментарии к ней: php.net/manual/en/mysqli-stmt.bind-param.php
Note that mysqli_stmt_bind_param() requires parameters to be passed by reference, whereas call_user_func_array() can accept as a parameter a list of variables that can represent references or values.

А в комментариях как минимум несколько способов, как это обойти.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы