Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何计算CodeIgniter中某一年的日期行数?_Sql_Codeigniter - Fatal编程技术网

Sql 如何计算CodeIgniter中某一年的日期行数?

Sql 如何计算CodeIgniter中某一年的日期行数?,sql,codeigniter,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%'');
我需要计算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%"');

但它导致了一个错误。

替换如下引号:

$query = $this->db->query("SELECT COUNT(*) FROM iplog.persons WHERE begin_date LIKE '2014%'");
对整个查询进行双引号,然后简单地引用您喜欢的条件。

您的意思是,计算行数:

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

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

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

其次,您使用了不适当的查询逻辑。当您想对日期或日期时间类型列进行比较时,决不能像使用那样使用
。有专门用于处理这些类型的特定MYSQL函数。在您的情况下,应该使用
YEAR()
来隔离
begin\u date
值的YEAR组件

资源:

您可以这样编写原始查询:(
COUNT(*)
COUNT(1)
是等效的)

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

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

您可以返回所有符合条件的行中的所有值,但这意味着向数据库询问您无意使用的值——这不是最佳做法我不推荐以下内容

$count = $this->db
              ->get_where('persons', 'YEAR(begin_date) = 2014')
              ->num_rows();
因此,当您无意使用结果集中的值时,不应生成一个完全填充的结果集,然后调用
num_rows()
count()

$count = $this->db
              ->get_where('persons', 'YEAR(begin_date) = 2014')
              ->num_rows();