我知道我做错了因为我从一个名字搜索编辑了这个可以有人帮我弄清楚我做错了什么?尝试搜索但没有任何显示。
<form name="frmSearch" method="get" action="<?=$_SERVER['SCRIPT_NAME'];?>"
<table class="table table-bordered">
<tr>
<th>Search by date
<input name="ftxtKeyword" type="date" id="ftxtKeyword" value="<?=$_GET["ftxtKeyword"];?>"> Between
<input name="btxtKeyword" type="date" id="btxtKeyword" value="<?=$_GET["btxtKeyword"];?>">
<input type="submit" class="btn btn-primary" value="Search">
</tr>
</table>
</form>
<?
if($_GET["ftxtKeyword"] != "")
{
$objConnect = mysql_connect("localhost","root","1234") or die("Error Connect to Database");
$objDB = mysql_select_db("mydatabase");
$strSQL = "SELECT * FROM service WHERE Service_date BETWEEN ".$_GET["ftxtKeyword"]." AND ".$_GET["btxtKeyword"]."";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
答案 0 :(得分:2)
您的SQL语句未正确引用日期。
而不是
$strSQL = "SELECT * FROM service WHERE Service_date BETWEEN ".$_GET["ftxtKeyword"]." AND ".$_GET["btxtKeyword"]."";
将其更改为
$strSQL = "SELECT * FROM service WHERE Service_date BETWEEN '".$_GET["ftxtKeyword"]."' AND '".$_GET["btxtKeyword"]."'";
很少有注意事项:
请考虑@ RiggsFolly的建议...不要使用已弃用的功能,因为当您最终移动到服务器(或将PHP升级到更高版本)时,您会遇到很多头痛。
避免对echo
使用PHP短标记。而不是<?=
使用<?php echo
。为什么?想一想当您将代码移到php.ini
设置关闭短标签的环境时可能会发生什么?......头疼。
一般情况下,我建议使用POST
作为表单的方法,而不是GET
;当您使用GET
时,当您点击提交按钮时,会在URL中公开params等...
不要在SQL语句中直接使用POST
或GET
值。使用准备好的语句并始终清理用户输入......作为一条黄金法则:永远不要信任用户:)
答案 1 :(得分:1)
日期,假设它们的格式正确,需要使用这样的引号
BETWEEN '".$_GET["ftxtKeyword"]."' AND '".$_GET["btxtKeyword"]."'";
正确的格式为YYYY-MM-DD