我应该如何在MySQL中筛选日期


How should I filter date in MySQL

我必须按日期从一个网页到另一个网页过滤一些行:

这是的第一页

<?php while($row = mysql_fetch_array($result)){ ?>      
    <tr>
        <td><a href="meeting_view.php?meet=<?php echo $row[2];?>" target = '_blank' ><?php echo date("d-m-Y", strtotime($row[2]));?></a>
</td><?php}?>

这是meeting_view.php

$meet = $_GET['meet'];
$result = mysql_query("SELECT * FROM meeting WHERE meeting_date=$meet");

它不起作用,我的剧本怎么了?

更改

$result = mysql_query("SELECT * FROM meeting WHERE meeting_date=$meet");

$result = mysql_query("SELECT * FROM meeting WHERE meeting_date='$meet'");

虽然William的回答是正确的,并将帮助您解决眼前的问题,但我想再提几个我注意到的问题:

  1. 您应该避免使用mysql扩展,因为它从PHP 5.5开始就被弃用了,请参阅此处
  2. 您的代码当前易受SQL注入攻击。请查看此处,了解如何保护数据库

干杯

只需进行以下更改:

<td> <a href="meeting_view.php?meet='<?php echo $row[2];?>'"   // add quotes
        target = '_blank' >
        <?php echo date("d-m-Y", strtotime($row[2]));?>
     </a>
</td>

同时更改:

$result = mysql_query("SELECT * FROM meeting WHERE meeting_date='".$meet."')"; 
  1. 你可能同时有两次会议。要选择正确的,您应该使用id而不是时间。

  2. 为了使脚本更快更容易,让MySQL进行日期转换。

  3. 使用关联数组使脚本更易于调试和读取!

  4. 另一个重要的观点是使用Mysqli代替Mysql!它同样简单,但可以在未来的PHP更新中使用。

  5. 确保输入是您想要的。使用intval( $_REQUEST['id'] )将发送的id转换为整数。否则,有人可能会通过url插入此id:"0; DROP TABLE meeting;",该url将选择id为0的行并删除整个表。这就是mrun在回答中所说的SQL注入!

我会这样重写所有内容:

// $sql = 'SELECT *, DATE_FORMAT("%d-%m-%Y", meeting_date) AS date FROM meeting';
<?php while($row = mysqli_fetch_assoc($result)){ ?>      
    <tr>
        <td><a href="meeting_view.php?id=<?= $row['id'] ?>" 
               target='_blank' ><?= $row['date'] ?></a>
</td><?php}?>

和:

$result = mysqli_query('SELECT * FROM meeting WHERE id=' 
        . intval( $_REQUEST['id'] ) );