我在将表中的日期与用户输入的日期进行比较时遇到一个简单的问题。(给我一张表中所有生日为“MM/DD/YYYY”的人的列表)。
将新人输入数据库时,我想验证该人是否已经在数据库中。因此,使用“名字”、“姓氏”和“出生日期”来查询表格,如果匹配,则会弹出一个窗口并显示“你确定要这样做 - 看起来这个人已经输入了”。
“名字”“姓氏”没有问题(我已经很好地工作了)所以现在我想在查询中添加“出生日期”。首先,我删除了“名字”和“姓氏”,只使用“出生日期”。
作为“概念证明”,以下 MySQL 查询在 MySQL Workbench 上运行良好:
SET @testdate = "1934-06-06";
SELECT localid, firstname, lastname, dob FROM administrative WHERE dob = @testdate;
表中的“dob”列是“日期”格式而不是“日期时间”。
所以我现在切换到 php 并将其编写为测试:
$frontenddob = "06/06/1934";
$dob = date("Y-m-d", strtotime($frontenddob));
echo "--$frontenddob--<br>"; //gives 06/06/1934
echo "--$dob--<br><br>"; //gives --1934-06-06-- ("--" added to "see" extra spaces)
echo "$dob"; echo "<br>"; //gives 1934-06-06
$host = "xx";
$user = "xx";
$password = "xx";
$dbname = "xx";
$cxn = mysqli_connect($host,$user,$password,$dbname);
if (mysqli_connect_errno()) {echo "No connection" . mysqli_connect_error();}
$query = " SELECT * FROM administrative WHERE dob = $dob ORDER BY lastname ASC ";
用户输入格式为 mm/dd/yyyy 的日期字符串。
通过 date("Ymd", strtotime($frontenddob)); 将其转换为日期格式。
“echo”表明转换是正确的——“echo $dob”给了我 1934-06-06。
该查询适用于 <=、>=、<、> 并且我已经尝试了其他所有方法 =、==、===、>=$date 和 <=$date 以及许多其他方法 - 均未成功。
- dob(出生日期)表中的格式是“日期”而不是“日期时间”。
- 用户输入字符串日期格式转换为 MySQL 日期格式 YYYY-MM-DD。
- 该查询适用于 <、>、<=、>=。
我哪里错了?
我提前谢谢你。