正在从数据库中读取空数组


Empty array being read from database

我正在尝试实现一些非常简单的事情。从今天到明年年底,从holidays表中读取假期的详细信息,并将结果显示为关联数组数组的var_dump(关键是一旦它起作用,我希望能够json_encode()它)。尽管表中有一行,但我的代码返回一个空数组array(0){}。有人能说出哪里出了问题吗?

<?php
//test file
//Database details
$db_host = 'localhost';
$db_name = 'hrmsbb';
$db_username = 'root';
$db_password = '';
//connect to database
$conn = new mysqli($db_host, $db_username, $db_password, $db_name);
if ( $conn->connect_error ) {
    die("Connection error");
}
//Show holidays from tomorrow upto the end of next year
$d = new DateTime('tomorrow');
$date_begin = $d->format('Y-m-d');
$d->add(new DateInterval('P1Y')); //add difference of one year
$y = $d->format('Y'); //get resulting year
$date_end = "$y-12-31"; //construct date
$query = $conn->prepare("SELECT holiday_id, name, date, value, comments FROM holidays 
         WHERE date BETWEEN ? AND ? ORDER BY date ASC");
$query->bind_param("ss", $date_begin, $date_end);
$result = $query->execute();
if( $result === false ) { //query failed
    die("Failed to query database");
}
$query->bind_result($id, $name, $date, $value, $comments);
//return results as array of objects
$data = array();
while( $query->fetch() ) {
    $data[] = array('id' => $id, 'name' => $name, 'date' => $date, 
              'value' => $value, 'comments' => $comments);
}
echo "<pre>";
var_dump($data);
echo "</pre>";

尝试下面的查询而不是 BETWEEN :

$query = $conn->prepare("SELECT holiday_id, name, date, value, comments FROM holidays 
         WHERE date > ? AND date < ? ORDER BY date ASC");

顺便说一句,我认为您不能在 mySql 中使用"日期"作为表中列的名称!这是因为单词"date"是mySql中的一个关键字。

回答以便可以关闭。我很草率,没有看到该表实际上没有可以与查询匹配的数据。