Pavell18RUS
@Pavell18RUS

Как сделать такую функцию?

function mysqli_query_function($mysqli, $query, $vars) {
	if(!isset($mysqli)) {
		return FALSE;
	}
	if(!isset($query)) {
		return FALSE;
	}
	if(!isset($vars)) {
		return FALSE;
	}
	$stmt = $mysqli->prepare($query);
	$stmt->bind_param('ssssssssss', $var[0], $var[1] .......);
	$stmt->execute();
}

Как сделать генерацию bind_param()? $vars - массив. Нужно чтобы на выхлопе было так:
$mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);

$query = 'UPDATE `users` SET `user` = ?, `id` = ? WHERE `login` =  ?';

$vars['user'] = 'user';
$vars['id'] = 'id';
$vars['login'] = 'login';

mysqli_query_function($mysqli, $query, $vars);

if(!isset($mysqli)) {
	return FALSE;
}
if(!isset($query)) {
	return FALSE;
}
if(!isset($vars)) {
	return FALSE;
}
$stmt = $mysqli->prepare('UPDATE `users` SET `user` = ?, `id` = ? WHERE `login` =  ?');
$stmt->bind_param('sss', $var['user'], $var['id'], $var['login']);
$stmt->execute();
  • Вопрос задан
  • 310 просмотров
Пригласить эксперта
Ответы на вопрос 2
index0h
@index0h
PHP, Golang. https://github.com/index0h
На что только люди не идут, что бы не использовать PDO.
В случае mysqli вам придется гдето хранить связку ключ-позиция, но это путь в никуда
Ответ написан
Stalker_RED
@Stalker_RED
Что вы имеете в виду, под "делать генерацию bind_param()"?
Она уже существует php.net/manual/ru/mysqli-stmt.bind-param.php

$vars = [
  'user'=>'Mike',
  'id'=>123,
  'login'=>'Agent M'
];
$types = str_pad('', count($vars), 's'); // генерируем строку 'sss' нужной длинны
$params = array_unshift($var, $types); // делаем ее первым параметром
$stmt = $mysqli->prepare('UPDATE `users` SET `user` = ?, `id` = ? WHERE `login` =  ?');
$stmt->execute();
call_user_func_array ([$stmt, 'bind_param'], $params); // вызываем метод с этими параметрами
$stmt->execute();
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы