PHP在日期之间搜索SQL DB

时间:2013-04-25 15:44:03

标签: php mysql sql

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

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

列名是date_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>

这是它在URL

中提供的字符串
/control_lbsresult.php?member_msisdn=&query=0827910119&dates=2013-04-01&datee=2013-04-
25

这就是我在结果页面中的内容:

<?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'";

我没有在日期之间过滤,而是给出了MSISDN的所有结果

我认为问题出在WHERE字符串中请协助

3 个答案:

答案 0 :(得分:1)

使用BETWEEN>= & <=,两者都应该有效。

您需要确保字段类型为DATE

另外,我建议使用mysqli。

以下是您的示例代码:

$stmt = $db->prepare("SELECT * FROM tbl_name WHERE date_field between ? AND ?");

$stmt->bind_param("ss",$start_date,$end_date);

$stmt->execute();

答案 1 :(得分:0)

BETWEEN与日期一起使用可以获得意想不到的结果。试试这个:

SELECT * 
FROM $tbl_name 
WHERE date >=  '" . $dates . "' 
AND date <= '" . $datee . "' 

答案 2 :(得分:0)

  1. 更改列的类型。

    ALTER TABLE tbl MODIFY COLUMN日期datetime;

  2. 使用BETWEEN