2017-09-14 32 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 ';