【问题标题】:PHP MYSQL SELECT BETWEEN DATE'S日期之间的 PHP MYSQL 选择
【发布时间】:2013-05-22 01:32:24
【问题描述】:

您好,我尝试使用以下代码从 mysql 中选择日期:

if (empty($_GET['date-range1'])) { 
    $sql=mysql_query("SELECT * FROM sohy_raports ORDER BY ".$_GET['sort']." ".$_GET['ad']."");

} else {
$sql=mysql_query("SELECT * FROM sohy_raports WHERE date BETWEEN ".$_GET['date-range1']." AND ".$_GET['date-range2']." ORDER BY ".$_GET['sort']." ".$_GET['ad']."");
}

但是使用此代码,我无法在日期之间进行选择,只能在 id 之间进行选择。它可能来自日期格式错误 Y-mm-dd ?

谢谢

【问题讨论】:

  • 只是一个评论:你应该将时间戳写入数据库,让这个问题更容易
  • $_GET['date-range1']$_GET['date-range2']的内容是什么?此外,您的代码很容易受到 SQL 注入攻击,如果您打算将此代码放在公共互联网上,您可能需要阅读一下。
  • 日期列的数据类型是什么?输入是什么?你为什么不引用这些日期值?为什么不使用查询参数?
  • 如果$_GET['date-range1'] 为空,您的代码将永远不会用于 else 条件,那么它将如何检查排序和广告之间的逗号。
  • 日期范围1 = 2013-05-23;日期范围2 = 2013-05-28;

标签: php mysql date select


【解决方案1】:

代替

$sql=mysql_query("SELECT * FROM sohy_raports WHERE date BETWEEN ".$_GET['date-range1']." AND ".$_GET['date-range2']." ORDER BY ".$_GET['sort']." ".$_GET['ad']."");

$query = "SELECT * FROM sohy_raports WHERE date BETWEEN ".$_GET['date-range1']." AND ".$_GET['date-range2']." ORDER BY ".$_GET['sort']." ".$_GET['ad'];
echo $query;
$sql=mysql_query($query);

这将打印出您发送到数据库的查询,并清除很多可能出错的地方,以及您使用的确切日期格式。

另一方面,但同样重要的是: - 不再使用 mysql_* 函数,它们已被弃用且不安全。改用 mysqli_* 或 PDO。 - 切勿在查询中只使用 GET 变量(或 POST),请确保首先对其进行清理以防止 SQL 注入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多