Как исправить номер ошибки: 1054 Неизвестный столбец «Массив» в предложении «где»

это моя ошибка:

Произошла ошибка PHP Серьезность: Уведомление Сообщение: Преобразование массива в строку Имя файла: templates/sidebar.php Номер строки: 24 Backtrace:

Файл: A:\Sites\PHP_CI\hasan-login\application\views\templates\sidebar.php Строка: 24 Функция: _error_handler

Файл: A:\Sites\PHP_CI\hasan-login\application\controllers\Admin.php Строка: 14 Функция: просмотр

Файл: A:\Sites\PHP_CI\hasan-login\index.php Строка: 315 Функция: require_once Произошла ошибка базы данных

Номер ошибки: 1054 Неизвестный столбец «Массив» в «где пункт»

ВЫБЕРИТЕ user_menu.id, menu ИЗ user_menu ПРИСОЕДИНЯЙТЕСЬ user_access_menu ВКЛ user_menu.id = user_access_menu.menu_id ГДЕ user_access_menu.role_id = Массив ORDER BY user_access_menu.menu_id ASC

Имя файла: A:/Sites/PHP_CI/hasan-login/system/database/DB_driver.php Номер строки: 691

Я использую php codeigniter. но когда я удаляю часть, где программа работает гладко. может ошибка где. как исправить эту ошибку?

это мой код:

<?php
//error_reporting(0);
$role_id = $this->session->userdata('role_id');
$queryMenu = "SELECT `user_menu`.`id`, `menu`
                FROM `user_menu` JOIN `user_access_menu`
                 ON `user_menu`.`id` = `user_access_menu`.`menu_id`
            WHERE `user_access_menu`.`role_id` = $role_id
            ORDER BY `user_access_menu`.`menu_id` ASC 
            ";
$menu = $this->db->query($queryMenu)->result_array();
var_dump($menu);
die;
?>

person Hasan Zahir    schedule 25.03.2019    source источник
comment
Первая строка сообщает вам о проблеме, $role_id — это массив, и вы пытаетесь использовать его как строку. Вам нужно извлечь из него соответствующее значение (возможно, $role_id[0], но, не видя больше вашего кода, невозможно сказать), чтобы использовать его в вашем запросе.   -  person Nick    schedule 26.03.2019


Ответы (2)


Это codeigniter, вы можете использовать функции OOB, приведенные на странице конструктора запросов codeigniter. , кстати, вы должны попробовать это:

 <?php
$role_id = $this->session->userdata('role_id');
$queryMenu = "SELECT `user_menu`.`id`, `menu`
                FROM `user_menu` JOIN `user_access_menu`
                 ON `user_menu`.`id` = `user_access_menu`.`menu_id`
            WHERE `user_access_menu`.`role_id` = ?
            ORDER BY `user_access_menu`.`menu_id` ASC 
            ";
$menu = $this->db->query($queryMenu,array($role_id))->result_array();
var_dump($menu);
die;
?>
person Jan Lois    schedule 25.03.2019
comment
Большое спасибо, эта команда сработала для меня: $menu = $this-›db-›query($queryMenu,print_r($role_id))-›result_array(); - person Hasan Zahir; 26.03.2019

используйте printr для переменной $role_id, я подозреваю, что это массив, и поэтому вы получаете эту ошибку.

person Chris    schedule 25.03.2019
comment
Большое спасибо, эта команда сработала для меня: $menu = $this-›db-›query($queryMenu,print_r($role_id))-›result_array(); - person Hasan Zahir; 26.03.2019