なぜ私のクエリがCodeigniterで空の結果を返すのか理解できません。 phpmyadminのSQLボックスで実行した場合、同じクエリが期待通りに機能します。MysqlクエリはCodeigniterで空の結果を返しますが、ネイティブPHPでは正常に動作します
id | name | registration
-------------------------------
1 | John | 2016-06-09 12:00:08
2 | Mike | 2016-06-12 12:45:23
3 | Greg | 2016-06-13 11:50:05
4 | Anthony | 2016-06-14 02:34:08
5 | Adam | 2016-06-14 04:34:18
6 | Steven | 2016-06-15 13:55:34
7 | Joe | 2016-06-16 07:23:45
8 | David | 2016-06-17 06:19:31
9 | Richard | 2016-06-17 11:20:27
10 | Jack | 2016-06-17 12:00:08
など:
マイテーブル(ユーザ)は、このようなものを見て。登録日が過去7日間のすべての人のリストを取得したいだけです。 '登録'列はDATETIME型です
クエリビルダーを使用したCIモデルのコードです。すでに自動ロードデータベースライブラリ
function get_user()
{
$query = $this->db->select('name')
->where('registration','BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()')
->get('users');
return $query->result();
}
エラーなしで結果を返します。次に、このようなクエリを直接入力しようとします。
function get_user()
{
$query = $this->db>query('SELECT name FROM users WHERE registration BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()');
return $query->result();
}
また、エラーなしで空の結果を返します。好奇心のために、私はCodeigniter以外のネイティブPHPを使って同じクエリを実行しようとしました。ここでは、コードです:
<?php
$link = mysqli_connect("localhost", "myusername", "mypassword", "mydatabase");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT name FROM users WHERE registration BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()";
$result = mysqli_query($link, $query);
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
echo $row["name"];
echo "<br>";
}
mysqli_free_result($result);
mysqli_close($link);
?>
出来上がり...期待どおりに動作し、結果を返します。だから、この場合Codeigniterの問題は何ですか?任意の入力をいただければ幸いです。ありがとうございます
問題は日付選択のようです。なぜそれがCIで働いていないのかまだ分かりません。日付が含まれていないクエリを作成した場合、正常に動作します。 –
このクエリをチェックして正常に動作します。 –