@Chasie

Fatal error: Call to undefined method mysqli_stmt::get_result() как избавиться от этой ошибки?

Помогите избавиться от этой ошибки
вот код:
<?
/*
    Скрипт для формирования сводного отчета
*/
 
$title_text='Данные по покупкам';


 // Формирование участка кода SQL-запроса, отвечающего за сортировку данных
$order_line='';
if(isset($_GET['order_col']) && $_GET['order_col']!='')
    {
    $order_line.=' ';
    if($_GET['order_col']=='1')
        {
        $order_line.='ORDER BY `FIO`';
        }
    else if ($_GET['order_col']=='2')
        {
        $order_line.='ORDER BY `kolvo`';
        }
    else if ($_GET['order_col']=='3')
        {
        $order_line.='ORDER BY `№ch`';
        }
 
    //Если задано,к запросу добавляется направление сортировки
    $order_line.=isset($_GET['order_style']) && $_GET['order_style']=='2' ? ' DESC' : ''; 
    }

// Формируется запрос к БД
$query="SELECT `Chek`.`FIO` AS `FIO1`, COUNT(*) AS `kolvo`, (SELECT CONVERT(GROUP_CONCAT(`nomer`) USING cp1251) from `Chek` where `FIO` = `FIO1`) AS `№ch` FROM `Chek` WHERE `FIO` LIKE ? GROUP BY `Chek`.`FIO` $order_line";
$prepare=$mysqli->prepare($query);
 $chek_fio='%';
// Если передано ФИО, подставляется в запрос
if(isset($_GET['chek_fio']) && $_GET['chek_fio']!='')
    {
    $chek_fio='%' . $_GET['chek_fio'] . '%';
    }
 
if(!$prepare->bind_param('s', $chek_fio))
    {
    $msg = 'Ошибка подготовки переменных.';
    }
 
if(!$prepare->execute())
    {
    $msg = 'Ошибка выполнения запроса.';    
    }
 
$result=$prepare->get_result();
$prepare->close();

$body.='Данные о покупках:';
 
 // Формирование формы для ввода условий запроса к БД
$body.='<form action="'.$main_directory.'" method="get">';
 
$body.='<input type="hidden" name="tables_action" value="'.$tables_action.'">';
$body.='<input type="hidden" name="menu_id" value="'.$menu_id.'">';
 
$body.='<br>Сортировка по столбцу ';
$body.='<select name="order_col">';
    $body.='<option value=""></option>';
    $body.='<option value="1"'.($_GET['order_col']==1 ? ' selected' : '').'>ФИО</option>';
    $body.='<option value="2"'.($_GET['order_col']==2 ? ' selected' : '').'>Количество покупок</option>';
    $body.='<option value="3"'.($_GET['order_col']==3 ? ' selected' : '').'>Номера чеков</option>';
$body.='</select>';
 
$body.='. Направление сортировки ';
$body.='<select name="order_style">';
    $body.='<option value="1">Возрастание</option>';
    $body.='<option value="2"'.($_GET['order_style']==2 ? ' selected' : '').'>Убывание</option>';
$body.='</select>.';
 
$body.=' Фильтр по ФИО покупателя: ';
$body.='<input type="text" name="chek_fio" value="'.$_GET['chek_fio'].'">';

 
$body.=' <input type="submit" value="Применить">';
$body.='</form>';

 
// Формирование таблицы со сводным отчетом
$body.='<table class="show_table">';
// Заголовок таблицы
$body.='<tr>';
$body.='<th>ФИО</th>';
$body.='<th>Количество покупок</th>';
$body.='<th>Номера чеков</th>';
$body.='</tr>';
// Цикл по всем полям таблицы
while($line=$result->fetch_assoc())
    {
    $body.='<tr>';
    foreach ($line as $key=>$val)
        {
        $body.='<td>'.$val.'</td>';
        }
    $body.='</tr>';
    }
$body.='</table>';

?>
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 2
1. Ваш код - ад
2. Этот метод гарантированно доступен, если используется mysqlnd. Возможно, ваш php неправильно сконфигурирован. Или вы не понимаете что такое mysqlnd.
3. Pdo тоже может использовать mysqlnd.
4. Использовать get_result надо аккуратно: этот метод всегда возвращает буфферизированный результат.
5. Не верьте тем, кто говорит, что PDO - единственно истинный путь. mysqli при прямых руках даёт гораздо больше возможностей. Но только при прямых руках.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
mysqlnd установлен?
Ответ написан
Ваш ответ на вопрос

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

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