CodeIgniter проблема получения и отображения данных из БД - PullRequest
2 голосов
/ 17 января 2011

Вот моя функция. Это очень просто.

function load_data() {

        $query = $this->db->query('SELECT * FROM configurations WHERE username="' . $this->session->userdata('username') . '"');
        return $query;
   }

Мой контроллер имеет следующую строку кода:

$data['query'] = $this->configurations->load_data();

На мой взгляд, я пытался:

foreach($query->result_array() as $row) {

echo $row->first;

}

Но я получаю ошибку, что пытаюсь получить свойство не-объекта. Разве запрос не возвращается из модели как объект?

Ответы [ 7 ]

5 голосов
/ 17 января 2011

Вы должны использовать $ query-> result_array, row_array, result или row, в противном случае вы возвращаете объект intead, чтобы получить результаты. Сверьтесь с руководством по CI.

2 голосов
/ 17 января 2011

Вы возвращаете результаты как array и используете $row в качестве объекта!
Попробуйте:

foreach($query->result() as $row) {

См .

1 голос
/ 17 января 2011

Ваша неопределенная переменная ошибка говорит мне, что ваш запрос может работать некорректно. Для диагностики ... включите профилировщик для проверки вашего запроса.

Из документации :

$ this-> output-> enable_profiler ();

Позволяет включать / отключать Профилировщик, который будет отображать тест и другие данные в нижней части вашего страницы для отладки и оптимизации цели.

Чтобы включить профилировщик, поместите следующая функция в любом месте Функции вашего контроллера: $ This-> output-> enable_profiler (TRUE);

Когда включено, отчет будет генерируется и вставляется внизу ваших страниц.

Ваш запрос будет показан в конце страница

Дважды проверьте синтаксис запроса, чтобы убедиться, что он работает правильно, и

1 голос
/ 17 января 2011

Попробуйте изменить $this->load->model('login/configurations', '', TRUE); на $this->load->model('login/configurations', 'configurations', TRUE); и посмотрите, работает ли он. Если это так, это связано с тем, как вы расширяете класс модели. То есть это будет связано с тем, какое имя вы дадите в файле configurations.php.

Надеюсь, это поможет.

0 голосов
/ 20 января 2011

Исходя из вашего вопроса, вы получаете результат в виде чистого массива (result_array), но распечатываете данные как объект ( $ row-> first ).

result () или row() возвращается в объекте, но result_array возвращается в массиве.

измените свою часть представления, например,

  foreach($query->result_array() as $row) {

     echo $row['first'];

   }

или, если вы хотите использовать объект,

foreach($query->result() as $row) {

     echo $row->first;

   }

Генерация результатов запроса в Codeigniter

0 голосов
/ 17 января 2011

Если раньше эта проблема существовала - основная проблема заключается в том, что если запрос не возвращает набор результатов, то $ query-> result_array () == NULL

NULL не является списком и не может быть обработан в foreach,Я обнаружил, что проверка этого условия решает эту проблему.

0 голосов
/ 17 января 2011

ваш код в своем текущем состоянии возвращает объект объектов и массивов:

print_r($query)

CI_DB_mysql_result Object
(
    [conn_id] => Resource id #29
    [result_id] => Resource id #39
    [result_array] => Array
        (
        )

    [result_object] => Array
        (
        )

    [current_row] => 0
    [num_rows] => 3
    [row_data] => 
)

вам нужно получить доступ к отдельным свойствам, чтобы получить фактические данные.

$result=$query->result();
print_r($result);

должен это сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...