【问题标题】:Codeigniter: Select based inquiriesCodeigniter:基于选择的查询
【发布时间】:2017-12-28 22:00:15
【问题描述】:

我在使用 codeigniter 时遇到了一个奇怪的问题,我的 sql 数据库似乎没有基于 SELECT 的查询。 最初我有类似的东西:

    public function __construct(){
        $this->load->database();
    }
    public function foo(){
         $this->db->query("SELECT * FROM 'table_name'");
         }

当使用 print_r 检查时返回一个空的结果数组。 于是我切换到:

    public function __construct(){
        $this->load->database();
    }
    public function foo(){
         $query = $this->db->get('tracker');
         print_r($this->db->last_query());
         print_r($query);
         }

$this->db->last_query 向我展示了即使尝试使用格式正确的语句 SELECT * FROM 'table_name',结果数组中也没有显示任何内容。故障排除告诉我:

1.insert 类似 "$this->db->query("INSERT INTO table VALUES"...) 的语句仍然可以正常工作。

  1. 使用 get() 发送的 SQL 查询仍然可以在 phpmyadmin 的 SQL 选项卡上运行

  2. sql 语句似乎正在进入数据库,因为我返回了一个 mysqli conn_id。

  3. 更改浏览器和/或重新启动 mamp 不起作用。

如果有人以前遇到过这个问题或看到我遗漏的明显内容,我将非常感激。

提前谢谢你!

马特

【问题讨论】:

    标签: php mysql sql-server codeigniter mysqli


    【解决方案1】:

    要显示结果,您需要获取->result()。例如:

    $obj_table = $this->db->query("SELECT * FROM 'table_name'");
    print_r($obj_table->result());
    

    您可以参考此文档以获取更多信息: https://www.codeigniter.com/userguide3/database/results.html

    希望回答了你的问题。

    【讨论】:

    • 这确实完美地回答了这个问题,非常感谢!我一直认为 print_r() 在 CI 中的通用性与在 php 中的其他地方一样通用,但我想不会!
    【解决方案2】:

    使用单引号中的表名删除。

    public function foo()
    {
         $query = $this->db->query("SELECT * FROM table_name");
         $result = $query->result_array();
         print_r($result);
    }  
    

    而且为了查看编译后的查询使用:

    echo $this->db->get_compiled_select();
    

    【讨论】:

    • 很高兴为您提供帮助:)
    【解决方案3】:

    对于您的这两种方法,您需要获取record set,如下所示

    方法一:使用result_array得到数组的结果。

        public function foo(){
             $q= $this->db->query("SELECT * FROM 'table_name'");
             $result= $q->result_array();
             print_r($result);
        }
    

    注意:你也可以使用这个$result= $q->result();你会得到记录集作为对象。

    方法二:

          public function foo(){
             $query = $this->db->get('tracker');
             $result = $query->result_array();
    
             print_r($result );
             //print_r($this->db->last_query());
    
          }
    

    【讨论】:

    • 感谢您提供很好解释的答案。我猜是 $q->result 对我来说是缺失的链接!
    猜你喜欢
    • 2011-09-18
    • 2021-09-20
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 2018-05-08
    相关资源
    最近更新 更多