PHP在日期之间搜索SQL数据库
我有一个SQL数据库,根据日期和时间存储信息 SQL存储的格式为2013-04-25 15:13:37 列名是date\u time,是Var 我的搜索PHP如下所示: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?>" />
<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
datedatetime代码>
在
之间使用
在
或>之间使用=&如果您的日期存储为字符串,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();