使用Codeigniter计算所有结果方法时发生数据库错误

时间:2017-03-03 02:30:06

标签: php mysql codeigniter

我正在为我的系统做一个事件调度模块。我想计算所有月份的所有预定事件..例如,我有3个事件为这个游行,然后5个传入事件在4月但我遇到错误“发生数据库错误” Error message CONTROLLER

$data['getAll'] = $this->CrudModel->count_all('events');

MODEL

public function count_all($table)

    {
        // $this->db->select('service');
        // $this->db->from($table);
        // $this->db->where('date LIKE','%'.$month.'%'); // 2017-03-04
        // $num_results = $this->db->count_all_results();
        // return $num_results->result();
        $query = $this->db->query("SELECT date, service from $table");
        foreach ($query->result() as $row)
        {
            # code...
            $date = $row->date;
            $service = $row->service;
            $date_explode = explode('-', $date);
            $year = $date_explode[0];
            $month   = $date_explode[1];
            $day  = $date_explode[2];
            $service_explode = explode(',', $service);
            echo "<pre>";
            print_r($date_explode);
            print_r($service_explode);
            echo "</pre>";
            $this->db->like('date',$month); // 2017-03-04
            $num_results = $this->db->count_all_results();
        }
        // return $query->result();
    }

问题:我的查询错了吗?如果是的话是什么?或任何其他建议如何计算所有预定的事件?

注意:我只使用了一个日期..预定日期(例如我在2017-03-04安排了活动),我没有结束日期(因为我在html中使用了日期输入类型)

2 个答案:

答案 0 :(得分:0)

在我看来,查询缺少FROM子句和表名。 (或者用内联视图查询代替标识符。)

MySQL(或MariaDB)服务器报告语法错误,标记WHERE关键字。 MySQL期望该语句具有FROM子句,并且没有找到它。

错误消息报告发出了无效语句,如下所示:

 SELECT COUNT(*) AS `numrows` WHERE ...

缺少的是FROM关键字和table_name:

 SELECT COUNT(*) AS `minimums` FROM some_row_source WHERE ...
                               ^^^^^^^^^^^^^^^^^^^^ 

可能$table被评估为空字符串?

为了调试这个,我建议先找出代码的哪一行导致这个SQL语句被执行。

答案 1 :(得分:0)

您必须指定表名

$this->db->count_all_results("table");

Active Record Documentation for count_all_results();