我正在为我的系统做一个事件调度模块。我想计算所有月份的所有预定事件..例如,我有3个事件为这个游行,然后5个传入事件在4月但我遇到错误“发生数据库错误” 的 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中使用了日期输入类型)
答案 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)