【问题标题】:Fatal error: Can't use function return value in write context in Codeigniter致命错误:无法在 Codeigniter 的写入上下文中使用函数返回值
【发布时间】:2017-06-12 19:54:47
【问题描述】:

这是我在模型中使用的函数

public function user_birthday() {

            $this->db->select('birth_day')
            ->from('informations')
            ->where(DATE_FORMAT(FROM_UNIXTIME('birth_day'), '%m-%d') = DATE_FORMAT(NOW(), '%m-%d'));
            $q = $this->db->get();
            return $q->result();
        }

$this->data['user'] = $this->users_m->user_birthday(); 这样的控制器中的功能 视图中的代码是

if (!empty($user)):
        echo $user;
    else:
        echo "No dob found";
    endif;

【问题讨论】:

  • 我想DATE_FORMATFROM_UNIXTIME是mysql函数,不是php函数。
  • 您检索到哪个错误?
  • 你能显示错误吗?而且你必须使用 print_r 来显示数组。
  • 是的,我正在通过 php 运行 mysql 查询。如果这些功能是问题,那么我需要如何运行这个查询?
  • 致命错误:不能在写入上下文中使用函数返回值。我正在使用 print_r 但没有得到任何输出 @RavinderReddy

标签: php codeigniter mysqli


【解决方案1】:

这是 Query Builder 比较麻烦的情况之一。试试这个

$q= $this->db->query("SELECT birth_day FROM informations WHERE DATE_FORMAT(birth_day, '%m-%d') = DATE_FORMAT(NOW(), '%m-%d')");

//return empty array if not records found
return $q->num_rows() > 0 ? $q->result() : [];

如果你真的,真的,真的想使用查询生成器,那么这个

$q = $this->db
    ->select('birth_day')
    ->where("DATE_FORMAT(birth_day, '%m-%d')=", "DATE_FORMAT(NOW(), '%m-%d')", FALSE)
    ->get('informations');

return $q->num_rows() > 0 ? $q->result() : [];

【讨论】:

  • 为什么查询生成器中的 WHERE 语句为 FALSE?
  • FALSE 防止语句值和标识符被转义——在这种情况下——Codeigniter 会做错。
猜你喜欢
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 2011-08-07
相关资源
最近更新 更多