我有一个名为event的表,有五列:event_id,Date,timing,event_type_id和capacity。
我正在尝试从表格事件中获取记录,其中日期列与格式为mm / dd / yyyy的特定日期匹配
这是我的PHP代码:
<?php
$con=mysqli_connect("localhost","root","simple","eventsdb");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if(isset($_GET['date']))
{
$when = $_GET['date'];
}
else{
$when = date("d/m/Y");
}
echo $when;
$sql="SELECT Event_id, Date, Capacity FROM event where DATE('Date')='$when'";
if ($result=mysqli_query($con,$sql))
{
// Fetch one and one row
while ($row=mysqli_fetch_row($result))
{
printf ("%s %s %s <br>",$row[0],$row[1],$row[2]);
}
// Free result set
mysqli_free_result($result);
}
mysqli_close($con);
?>
我认为sql语句有问题,因为它会返回所有记录,即使是那些与日期值不匹配的记录
非常感谢任何帮助。
答案 0 :(得分:2)
从上面的例子中,应该写出sql语句问题。
问题sql:
$sql="SELECT Event_id, Date, Capacity FROM event where DATE('Date')='$when'"
请转到以下内容:
$sql="SELECT Event_id, Date, Capacity FROM event where DATE(Date)='$when'"
也许它可以工作,请试试。
在你的情况下DATE('Date')将返回NULL,当返回值为NULL时,它将作为条件比较无效,类似于无查询条件或等效于1 = 1,如通过返回所有记录来提及。