2017-09-14 57 views
0

只是一个小简单的问题, 我想在我的PHP函数,我想要执行同样形成这样如何找到在CI从MySQL月明智的数据

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

查询,但现在我从交变得到这个,形成查询我的输出是这样的后:

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); 

谁能告诉我在哪里,我错了?

+0

这个“select month(”1999-05-19“);”在MySQL中对我来说工作得很好。你遇到什么样的错误? getAnyData函数什么都不返回?如果是,您能向我们展示正在执行的整个查询吗? – AlwaysGoingToAsk

+0

它在响应中给我一个空白数组。 –

+2

要查找错误,请获取由php脚本执行的SQL查询,然后在MySQL Workbench中手动执行它(例如)。你可能会看到问题 – AlwaysGoingToAsk

回答

2

使用如下给出可以帮助你

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

通过这样做,它仍然给我斜线 –

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')"; 
1

要删除单引号,你需要通过false paramete的活动记录。

$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); 
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 ';