只要记住您提供的信息,一切似乎都很好。
我们必须查看整个代码才能找到错误。可能是 MySQL 字段类型问题,也可能是您将查询发送到 MySQL 的方式。
我在这里有一个工作示例,其中包含您的表的最小版本。希望对你有帮助!
冰箱表字段:
mysql> desc fridge;
+----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| food | varchar(20) | YES | | NULL | |
| date_purchased | date | YES | | NULL | |
+----------------+------------------+------+-----+---------+----------------+
(注意 date_purchased 字段中的 date 类型)。
编辑:如果您对该字段使用 date 或 datetime 类型,则此示例有效。
冰箱表内容:
mysql> select * from fridge;
+----+-----------+----------------+
| id | food | date_purchased |
+----+-----------+----------------+
| 1 | hamburger | 2016-04-28 |
| 2 | pizza | 2016-04-12 |
| 3 | salad | 2016-05-10 | <-- future date
| 4 | fruit | 2016-05-04 | <-- future date
+----+-----------+----------------+
PHP代码(使用语句查询数据库):
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// prepare and bind
$stmt = $conn->prepare("select food from fridge where date_purchased < ?");
$stmt->bind_param("s", $date);
// set parameters and execute
$date = date("Y-m-d"); // NOTE: $date stores the current date
echo "<p>Food with date < $date</p>";
$stmt->execute();
// bind variables to prepared statement
$stmt->bind_result($food);
// fetch values (here you can do whatever you want with results)
while ($stmt->fetch()) {
echo "<p>$food</p>";
}
$stmt->close();
$conn->close();
结果(我们现在不想要健康食品……):
日期
汉堡包
披萨