Запрос в коде воспламенитель продолжает возвращать «1» - PullRequest
1 голос
/ 18 ноября 2009

Я код воспламенитель нуб. У меня есть контроллер, как показано ниже:

<?php
class Welcome extends Controller {
    function Welcome()
    {
        parent::Controller();   
        $this->load->model('usermodel');
    }

    function index()
    {
        $res = $this->db->get('users');
        die( print_r($res) );
    }
}

У меня есть таблица 'users' в моей базе данных, и я трижды проверил свои учетные данные базы данных. Тем не менее, метод печати продолжает печатать только «1». Кто-нибудь знает, почему этот простой запрос не будет работать?

Также стоит отметить, что print_r распечатывает объект, и я установил active_record = true в моем файле database.php. Если это помогает, это вывод

print_r($this->db);

печать

CI_DB_mysql_driver Object ( [dbdriver] => mysql [_escape_char] => ` [delete_hack] => 1 [_count_string] => SELECT COUNT(*) AS [_random_keyword] => RAND() [ar_select] => Array ( ) [ar_distinct] => [ar_from] => Array ( ) [ar_join] => Array ( ) [ar_where] => Array ( ) [ar_like] => Array ( ) [ar_groupby] => Array ( ) [ar_having] => Array ( ) [ar_limit] => [ar_offset] => [ar_order] => [ar_orderby] => Array ( ) [ar_set] => Array ( ) [ar_wherein] => Array ( ) [ar_aliased_tables] => Array ( ) [ar_store_array] => Array ( ) [ar_caching] => [ar_cache_exists] => Array ( ) [ar_cache_select] => Array ( ) [ar_cache_from] => Array ( ) [ar_cache_join] => Array ( ) [ar_cache_where] => Array ( ) [ar_cache_like] => Array ( ) [ar_cache_groupby] => Array ( ) [ar_cache_having] => Array ( ) [ar_cache_orderby] => Array ( ) [ar_cache_set] => Array ( ) [username] => root [password] => my_password [hostname] => localhost [database] => bhr_development [dbprefix] => [char_set] => utf8 [dbcollat] => utf8_general_ci [autoinit] => 1 [swap_pre] => [port] => [pconnect] => 1 [conn_id] => [result_id] => [db_debug] => [benchmark] => 0 [query_count] => 0 [bind_marker] => ? [save_queries] => 1 [queries] => Array ( [0] => SELECT * FROM (`users`) ) [query_times] => Array ( [0] => 0 ) [data_cache] => Array ( ) [trans_enabled] => 1 [trans_strict] => 1 [_trans_depth] => 0 [_trans_status] => [cache_on] => [cachedir] => [cache_autodel] => [CACHE] => [_protect_identifiers] => 1 [_reserved_identifiers] => Array ( [0] => * ) [stmt_id] => [curs_id] => [limit_used] => ) 1

UPDATE Я пробовал что-то вроде:

$query = $this->db->get("users");
        foreach($query->result() as $row){
            echo "hello";
        }
        die();

без удачи. Еще получите:

Fatal error: Call to a member function result() on a non-object in ...welcome.php...

Ответы [ 5 ]

2 голосов
/ 18 ноября 2009

$res - это объект результата, а не строка, полученная в результате успешного запроса. Вы пытались вызвать $res->num_rows() или перебрать $res->result() в цикле foreach и распечатать значения столбцов (например, echo $res->col_name)?

Кроме того (я полагаю, я должен был сначала спросить об этом), есть ли вообще какие-либо строки в этой таблице?

0 голосов
/ 20 марта 2012

У меня была похожая проблема. Мой код выводит большой PDF, и общее время выполнения превысило 60 секунд. Я считаю соединение с базой данных потерянным.

Попробуйте $this->db->reconnect(); и не забудьте иметь $db['default']['db_debug'] = TRUE; в вашем database.php.

0 голосов
/ 15 декабря 2009

Чтобы запрос работал правильно, я ожидал, что сначала вам нужно будет инициализировать класс базы данных:

$this->load->database();
$res = $this->db->get('users');
0 голосов
/ 18 ноября 2009

Правильное использование:

$res = $this->db->get('users');

foreach ($res->result() as $row)
{
    echo $row->title;
}

Фактические строки данных результата не загружаются, пока вы не выполните итерацию по ним.

0 голосов
/ 18 ноября 2009

Ваш запрос не возвращает 1, что исходит из оператора die. Функция print_r не возвращает значения, пока вы не передадите второй параметр. Что происходит, так это то, что функция print_r принимает значение true и печатается функцией die.

Если вы хотите просмотреть результаты запроса, вы должны использовать функции result или result_array, как описано в http://codeigniter.com/user_guide/database/results.html. Там нет ярлыка.

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