我有下一个查询。
$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%”');
但它出现了错误
请帮助我!
答案 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标准。