【问题标题】:How to write mysql query with WHERE 1 in Codeigniter Active record form如何在 Codeigniter 活动记录表单中使用 WHERE 1 编写 mysql 查询
【发布时间】:2015-12-27 21:41:59
【问题描述】:

如何编写以下查询

SELECT * FROM `TABLE_NAME` WHERE 1 

在 codeigniter 活动记录表单中?

我尝试了类似的方法:

$this->db->select('*');
$this->db->from('TABLE_NAME');
$this->db->where('1');

但我收到以下错误:

错误号:1054

“where 子句”中的未知列“1”

SELECT * FROM (`TABLE_NAME`) WHERE `1` IS NULL

我使用相同的方法从数据库中选择值。我只是传递列、条件和表名。我的问题是,当我想从一个表中获取所有数据时,我将在 where 子句中给出什么?

以下是我的查询部分:

function get($fields,$table,$where)
{
     $this->db->select($fields);
     $this->db->from($table);
     $this->db->where($where); 
     $q = $this->db->get();
     if($q->num_rows() > 0)
     {
         foreach($q->result() as $row)
         {
              $data[] = $row;
         } 
         return $data; 
      }
 } 

按照我在控制器中调用函数的方式:

$data['details'] = $this->MODEL_NAME->get("*",PREFIX."TABLE_NAME",1);

这里的模型是从自动加载中加载的。

【问题讨论】:

  • 列名是什么?
  • sql 错误。应该类似于 SELECT * FROM Customers WHERE Country='Mexico';
  • SELECT * FROM t WHERE 1 等价于 DBMS 中的SELECT * FROM t,其中1 表示true。为什么你特别需要WHERE 1 位?
  • @Amadan 我已经编辑了我的问题:我使用相同的方法从数据库中选择值。我只是传递列、条件和表名。我的问题是,当我想从表中获取所有数据时,我将在 where 子句中给出什么?
  • "我的问题是,当我想从一个表中获取所有数据时,我将在 where 子句中给出什么?"没有;不要给出WHERE 子句。 WHERE 用于限制数据集 - 你不想限制它,只是不要限制它。

标签: php mysql codeigniter


【解决方案1】:

改变

$this->db->where($where);

进入

if ($where !== null) {
    $this->db->where($where);
}

function get($fields,$table,$where)

进入

function get($fields,$table,$where=null)

因此您可以在拨打get 时选择不提供$where

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2016-01-08
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多