如何在CodeIgniter中一起使用count和like?

时间:2015-02-26 14:02:38

标签: sql codeigniter

我有下一个查询。

$query = $this->db->query('SELECT COUNT(*) FROM iplog.persons WHERE begin_date LIKE '2014%'');

我需要计算从2014年开始的列数。

当我运行此脚本时,我收到一个错误:

解析错误:语法错误,第12行的C:\ xampp \ htdocs \ iPlog2 \ application \ controllers \ stat.php中的意外“2014”(T_LNUMBER)

我试图将我的CI脚本更改为$ query = $ this-> db-> query('SELECT COUNT(*)FROM iplog.persons WHERE begin_date LIKE“2014%”');

但它出现了错误

请帮助我!

3 个答案:

答案 0 :(得分:1)

你的意思是,算上ROWS:

因此,只需根据条件计算您拥有的行数:

$year = '2014'
$this->db->from('iplog');
$this->db->like('begin_date', $year); 
$query = $this->db->get();
$rowcount = $query->num_rows();

答案 1 :(得分:1)

首先,您有一个关于单引号使用的简单错字。完整的sql字符串应该用双引号引起来,以便您的值引用可以用单引号引起来。

第二,您使用了不合适的查询逻辑。如果要在DATE或DATETIME类型的列上进行比较,则永远不要使用LIKE。有专门用于处理这些类型的特定MYSQL函数。就您而言,您应该使用YEAR()来隔离begin_date值的年份组成部分。

资源:https://www.w3resource.com/mysql/date-and-time-functions/mysql-year-function.php

您可以这样编写原始查询:

$query = $this->db->query('SELECT COUNT(*) FROM persons WHERE YEAR(begin_date) = '2014'");
                            // or COUNT(1)

或者如果您想使用Codeigniter方法来构建查询:

$count = $this->db->where("YEAR(begin_date) = 2014")->count_all_results("persons");

答案 2 :(得分:0)

替换这样的引号:

$query = $this->db->query("SELECT COUNT(*) FROM iplog.persons WHERE begin_date LIKE '2014%'");

双引号整个查询,然后简单引用您的LIKE标准。