Codeigniter:选择基于查询

时间:2017-07-23 04:42:49

标签: php mysql sql-server codeigniter mysqli

我对codeigniter有一个奇怪的问题,其中没有基于SELECT的查询似乎进入我的sql数据库。 最初我有类似的东西:

    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.插入语句,如" $ this-> db->查询(" INSERT INTO表值" ...)仍然可以正常工作。

  1. 使用get()发送的SQL查询仍在phpmyadmin的SQL选项卡上工作

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

  3. 更改浏览器和/或重新启动mamp无效。

  4. 如果有人之前遇到过这个问题,或者看到一些我不知道的事情,那么我将非常感激。

    提前谢谢!

    马特

3 个答案:

答案 0 :(得分:1)

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

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

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

希望回答了你的问题。

答案 1 :(得分:1)

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

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

并且为了看到编译的查询使用:

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

答案 2 :(得分:1)

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

方法1:使用result_array将结果作为数组。

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

注意:您也可以使用此$result= $q->result();,您将获取记录集作为对象。

方法2:

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

         print_r($result );
         //print_r($this->db->last_query());

      }