在日期之间搜索,但在提交搜索时不显示任何内容



我知道我做错了,因为我只是通过名称搜索编辑了它,有人可以帮助我弄清楚我做错了什么吗?尝试搜索,但没有任何显示。

<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."]");
?>

您的 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"]."'";

需要注意的几点:

  1. 一定要考虑@RiggsFolly的建议...不要使用已弃用的功能,因为当您最终迁移到服务器(或将PHP升级到更高版本)时,您会遇到很多麻烦。

  2. 避免在echo秒内使用 PHP 短标记。而不是<?=使用<?php echo.为什么?想一想,当您将代码移动到php.ini设置关闭了短标记的环境时会发生什么情况?...头痛。

  3. 一般来说,我建议使用POST作为表单的方法而不是GET;当你使用GET时,当你点击提交按钮时,你会在 URL 中暴露参数等......和

  4. 不要直接在 SQL 语句中使用POSTGET值。使用预准备语句并始终清理用户输入...作为黄金经验法则:永远不要相信用户:)

日期,假设它们的格式正确,需要像这样用引号引起来

BETWEEN '".$_GET["ftxtKeyword"]."' AND '".$_GET["btxtKeyword"]."'";

正确的格式是YYYY-MM-DD

最新更新