Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CI中的空数据库输出_Php_Codeigniter - Fatal编程技术网

Php CI中的空数据库输出

Php CI中的空数据库输出,php,codeigniter,Php,Codeigniter,我正在构建一个简单的应用程序,并尝试测试DB结果输出。但不幸的是,我得到的只是一个大小为0的数组。以下是控制器代码摘录: $data['query'] = $this->db->query('SELECT role_id, role_privilege FROM role'); $this->load->view('welcome_message', $data); <?php echo count($query->result_array(

我正在构建一个简单的应用程序,并尝试测试DB结果输出。但不幸的是,我得到的只是一个大小为0的数组。以下是控制器代码摘录:

$data['query'] = $this->db->query('SELECT role_id, role_privilege FROM role');
$this->load->view('welcome_message', $data);
<?php
        echo count($query->result_array())."<br/>";
        foreach ($query->result() as $row){
            echo $row->role_id . '<br/>';
            echo $row->role_privilege . '<br/>';
        }
        echo 'Total result '.$query->num_rows();
    ?>
和视图代码摘录:

$data['query'] = $this->db->query('SELECT role_id, role_privilege FROM role');
$this->load->view('welcome_message', $data);
<?php
        echo count($query->result_array())."<br/>";
        foreach ($query->result() as $row){
            echo $row->role_id . '<br/>';
            echo $row->role_privilege . '<br/>';
        }
        echo 'Total result '.$query->num_rows();
    ?>
从命令行运行查询会得到两行输出。有人能指出我遗漏了什么吗

编辑:
也讨论了这个问题

编辑:
可能是一些特定于平台的东西(我真的很怀疑)?我正在运行LAMP(php5.3.2、mysql 5.1.37、apache2.2.15)

编辑:
这将打印出一个“Array()”字符串。我的数据库已满100%。我可以肯定地说,因为我做到了

INSERT INTO role(role_privilege) VALUES ('ROLE_MODERATOR');
INSERT INTO role(role_privilege) VALUES ('ROLE_USER');
然后通过命令行检查它

编辑:
在我将其放入控制器后:

echo $this->db->last_query(); exit;
我得到下一个输出:

SELECT role_id, role_privilege FROM role

这正是我需要的sql查询。不幸的是,结果是o大小的数组。

嗯,听起来您的db访问设置正确,因为您没有收到错误。我想这也意味着这个表是存在的。我知道您说过您从命令行运行该查询,但是您确定您正在访问相同的数据集/服务器/表吗?没有奇怪的版本控制或者什么?听起来好像角色表中没有记录。抱歉,你的代码看起来很正确,只是在抓救命稻草

做什么呢

SELECT * FROM role
然后做一个

print_r($query->result_array()); 
你认为呢?这至少会显示列名,以便您知道您正在访问正确的数据


试试看,然后详细报告,希望它能提供一些提示。

好吧,这里的问题基本上不是与CI相关的问题,但奇怪的是CI无法跟踪此错误。下面是发生的事情:


在安装php时,我没有指定——使用mysql socket参数,看起来php试图使用a/tmp/mysql.sock(默认值),这显然不是在my.cnf中指定的。所以CI试图绑定到一个不存在的套接字。在php.ini中更改mysql参数解决了这个问题。

在控制器中,在查询行后添加:echo$this->db->last_query();出口然后将sql查询粘贴到原始帖子中。可能有助于调试。请确保表中确实有一些数据。您可能在不知不觉中查询了一个空表。啊,这一定很难找到。很高兴你明白了!