PHP在日期之间搜索SQL数据库

PHP在日期之间搜索SQL数据库,php,mysql,sql,Php,Mysql,Sql,我有一个SQL数据库,根据日期和时间存储信息 SQL存储的格式为2013-04-25 15:13:37 列名是date\u time,是Var 我的搜索PHP如下所示: <form action="control_lbsresult.php" method="get"> <input type="hidden" name="member_msisdn" value="<?=$query?>" />

我有一个SQL数据库,根据日期和时间存储信息

SQL存储的格式为2013-04-25 15:13:37

列名是date\u time,是Var

我的搜索PHP如下所示:

<form action="control_lbsresult.php" method="get">
                <input type="hidden" name="member_msisdn" value="<?=$query?>" 
/>
                <input type="text" name="query" />
                <br />
                <label for="dates"></label>
                <input type="date" name="dates" id="dates" />
                 Start Date<br />
                <label for="datee"></label>
                <input type="date" name="datee" id="datee" />
                 End Date<br />
                <input type="submit" value="Search" />
            </form>
这是我在结果页中的内容:

<?php
$host="localhost"; // Host name 
$username="***"; // Mysql username 
$password="****"; // Mysql password 
$db_name="****"; // Database name 
$tbl_name="lbs_"; // Table name

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// get value of id that sent from address bar
$id=$_GET['id'];

// Retrieve data from database 
$sql="SELECT * FROM $tbl_name WHERE date between  '" . $dates . "' AND '" . $datee . "'    
msisdn='$msisdn'";

在日期之间使用
可以得到意外的结果。请尝试以下方法:

SELECT * 
FROM $tbl_name 
WHERE date >=  '" . $dates . "' 
AND date <= '" . $datee . "' 
选择*
来自$tbl_name
其中日期>='“$dates.”
日期
  • 更改列的类型

    ALTER TABLE tbl MODIFY COLUMN
    date
    datetime

  • 之间使用


    >之间使用
    =&如果您的日期存储为字符串,mysql不会将其视为日期。您应该将该数据类型更改为datetime。。它们不再得到维护。看到了吗?相反,请了解,并使用or-将帮助您决定哪些。
    $dates
    $datee
    未在代码中的任何位置定义,并且
    msisdn
    部分也将导致SQl中的语法错误。请在进行任何SQl编程之前阅读相关内容。你在这里所做的是鲁莽的,可能会给你带来严重的损失。OP不太可能通过字符串获得他们想要的结果。如果值存储在正确的日期、日期时间或时间戳字段中,则在日期之间完全可以工作。你说的“意外结果”是什么意思<在
    之间的code>几乎总是比
    x>=y和x“从$tbl_name中选择*,其中date>=”更好$日期。“'和日期确定这里是我的工作内容(“选择*FROM lbs_uu.WHERE date>=”“$dates.”和日期
    
    SELECT * 
    FROM $tbl_name 
    WHERE date >=  '" . $dates . "' 
    AND date <= '" . $datee . "' 
    
    $stmt = $db->prepare("SELECT * FROM tbl_name WHERE date_field between ? AND ?");
    
    $stmt->bind_param("ss",$start_date,$end_date);
    
    $stmt->execute();