【问题标题】:Inconsistent results from phpmyadmin and Codeigniter's $this->db->query() functionphpmyadmin 和 Codeigniter 的 $this->db->query() 函数的结果不一致
【发布时间】:2013-03-24 14:39:21
【问题描述】:

用户表

id  stamp_created          email_address
1   2013-03-06 22:00:01    test+1@gmail.com
2   2013-03-20 22:00:08    test+2@gmail.com
3   2013-03-27 22:00:17    test+3@gmail.com
4   2013-04-01 22:00:27    test+4@gmail.com

我有这个问题

SELECT
    `user`.*
FROM
    `user`
WHERE
    `user`.`email_address` IS NOT NULL
    AND (`user`.`stamp_created` BETWEEN '2013-04-01 00:00:00' AND '2013-04-01 23:59:59')

在 phpmyadmin 中运行查询时,我得到了正确的结果

4   2013-04-01 22:00:27    test+4@gmail.com

但是当我通过

运行查询时
$sql = "SELECT
    `user`.*
FROM
    `user`
WHERE
    `user`.`email_address` IS NOT NULL
    AND (`user`.`stamp_created` BETWEEN '2013-04-01 00:00:00' AND '2013-04-01 23:59:59')
";

$this->db->query($sql)->result_array();

我得到一个空数组。

知道为什么会这样吗?

附:已经确认 CI 和 phpmyadmin 使用的是同一个数据库,所以这不是问题。

【问题讨论】:

  • $sql 中有什么内容?你能说明你是如何为它分配 SQL 字符串的吗?
  • 如果您尝试稍微简化的查询,例如 - select * from user,会发生什么?
  • @arvinsim 返回值为空?如果是问题,您应该 return $this->db->query($sql)->result_array();
  • 首先,运行 $this->db->last_query() 并确认发送的查询与您想的一样。
  • 那么它是在你的 ->result_array() 之后的代码中的东西......你以某种方式丢失了保存结果的数组变量。发布模型函数和控制器的其余部分

标签: mysql codeigniter phpmyadmin


【解决方案1】:

如果你尝试怎么办

$query = $this->db->sql('yourquery');

if($query->num_rows() > 0){
   foreach($query->result() as $row){
      $retdat[] = array(
           'test1' => $row->stamp_created
     ); 
  }
    print_r($retdat);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 2012-07-23
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2018-02-02
    • 2016-12-29
    相关资源
    最近更新 更多