如何从CI中的mysql查找月份数据

时间:2017-09-14 07:44:30

标签: php codeigniter-3

只是一个小问题, 我想像这样构建查询

SELECT *
FROM users
WHERE MONTH( `birthday` ) = MONTH( '1999/05/19' ) 

现在,在我的PHP函数中,我想执行相同的操作,但是我从post变量获取此信息,在形成查询后,我的输出是这样的:

SELECT *
FROM `users`
WHERE MONTH(birthday) = 'MONTH(\"1999-05-19\")'

我想从代码中删除\。 我的以下代码是:

$birthday = $this->input->post('birthday');
$where['MONTH(birthday)'] = 'MONTH('.'"'.$birthday.'"'.')';
$result = $this->User_model->getAnyData($where);

谁能告诉我哪里出错了?

6 个答案:

答案 0 :(得分:1)

使用如下给出的帮助

$birthday = $this->input->post('birthday'); 
$where['MONTH(birthday)'] = "MONTH(".$birthday.")";
$result = $this->User_model->getAnyData($where);

答案 1 :(得分:1)

如果POSTed数据包含反斜杠,请使用PHP stripslashes()删除它们:http://php.net/manual/en/function.stripslashes.php

答案 2 :(得分:1)

取决于您的字符串是用单引号还是双引号括起来取决于您的操作:

<?php
$sql = 'SELECT *
FROM `users`
WHERE MONTH(birthday) = MONTH("1999-05-19")';

应该有效。也:

<?php
$sql = "SELECT *
FROM `users`
WHERE MONTH(birthday) = MONTH('1999-05-19')";

答案 3 :(得分:1)

要删除单引号,您需要在活动记录中传递false参数。

$this->db->where('MONTH(birthday)', 'MONTH(YOUR_DATA)', FALSE);

所以查询就像:

$this->db->select('*');
$this->db->from('TABLE_NAME');
$this->db->where('MONTH(birthday)', 'MONTH(YOUR_DATA)', FALSE);

答案 4 :(得分:0)

尝试使用此功能,仅提取一个月。

 $birthday = $this->input->post('birthday');
            $birthday = DateTime::createFromFormat('d/m/Y', $birthday)->format('m');

            $where['MONTH(birthday)'] = $birthday;
            $result = $this->User_model->getAnyData($where);

SELECT * FROM users WHERE MONTH( `birthday` ) = '05 ';

答案 5 :(得分:0)

DISPLAY MONTH WISE DATA WITH PHP CODEIGNITER

path: tests/Project/Module/Business/Customer/ModelTest.php
namespace: Project\Module\Business\Customer