PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 3
_Evgenij_ Отправлено: 14 Августа, 2017 - 10:26:19 • Тема: bind_result и подготовленный запрос произвольным количеством переменных • Форум: Работа с СУБД

Ответов: 4
Просмотров: 922
Насколько я понимаю, в целях безопасности лучше использовать подготовленные запросы, а где подготовленный запрос, там и bind_result() ...
_Evgenij_ Отправлено: 14 Августа, 2017 - 09:27:02 • Тема: bind_result и подготовленный запрос произвольным количеством переменных • Форум: Работа с СУБД

Ответов: 4
Просмотров: 922
Нашел решение при помощи eval(). Но буду очень благодарен, если кто-нибудь на вышеприведенном коде объяснит как использовать в такой ситуации функцию call_user_func_array().

Решение с помощью eval():

//создаем строку, генерируем необходимое количество $col...
$bindResult = '$stmt->bind_result($col1,$col2, $col3, $col....);';
//преобразуем строку в код
eval($bindResult);
_Evgenij_ Отправлено: 14 Августа, 2017 - 01:03:25 • Тема: bind_result и подготовленный запрос произвольным количеством переменных • Форум: Работа с СУБД

Ответов: 4
Просмотров: 922
Доброго времени суток!

Прошу помочь готовым кодом, поскольку с MySql познакомился совсем недавно.
Вопрос в следующем: как при подготовленном динамическом запросе, передавать разное количество привязываемых переменных в bind_result()? После нескольких часов поиска в сети, пришло понимание, что нужно как-то использовать функцию call_user_func_array(),
но как она должна выглядеть в данном случае не могу сообразить... я так понимаю, должно выглядеть приблизительно так: call_user_func_array('bind_result', array($col1, $col2, $col...)), НО в описании функции написано, что она вызывает пользовательскую функцию с массивом параметров, отсюда два вопроса: 1)если указать bind_result вызовется ли "родная" функция bind_result() или нужно писать свою и туда уже "впихивать" bind_result(); 2)как я понимаю, если просто написать array($col1, $col2, $col...) то передадутся значение $col1, $col2, $col..., а мне необходимо передать имена переменных $col1, $col2, $col...
Вообщем темный лес и ни одной светлой мысли(((

PS Просьба не отсылать читать документацию (я там был) примеры на разных ресурсах видел, пробовал под себя переписать, но увы не хватает знаний, поэтому ОГРОМНАЯ просьба, переписать нижеприведенный код, или привести пример рабочего(полного) кода.

Заранее благодарен!

$id = '1';
$stmt = $db_mysqli->prepare("SELECT `сolumn_name1`,`сolumn_name2`, `сolumn_name...` FROM `db_name_table` WHERE `id`=?"); //Отправляем шаблон
$stmt->bind_param("i",$id); //Устанавливаем параметры
$stmt->execute() or die("Запрос не выполнен!"); //Выполняем запрос
$stmt->bind_result($col1, $col2, $col...); //<-Вот как сюда передавать произвольное количество переменных???

while ($stmt->fetch())
{
echo"<br>$col1 $col2 $col..."; //Выводим результат пользователю.
}
$stmt->close(); //Удаляем шаблон из памяти.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB