【发布时间】:2014-07-14 05:07:12
【问题描述】:
我有一个表单,我将日期保存为隐藏字段并在表单提交时传递日期值。 现在的问题是,当我在 MySQL 查询中使用这个 $date 变量时,它与表中的任何内容都不匹配。
我的查询是:
$query = "DELETE FROM #__table WHERE zone_id = {$zid} AND user_id <> {$uid} AND date = {$date}";
表中的日期字段是“DATE”数据类型,而$date变量中存储的日期值是'STRING'类型。
有什么方法可以匹配它们并从查询中获取结果?
【问题讨论】:
-
您必须向我们展示日期输入和所需输出是什么。
-
你的 PHP 日期字符串是什么样子的?
-
日期字符串看起来像 2014-07-14,存储在数据库中的是 2014-07-14,但它们的数据类型不同
-
当您在 MySQL 的
where子句中过滤日期时,您将日期写成字符串(例如... where myDate='2014-07-14')。我对 PHP 不是很熟悉,但是,至少在 Java 中,我可以将日期的字符串表示形式传递给准备好的语句(是的,我使用setString())并且它运行良好。用字符串试试...应该可以工作 -
您必须将日期值放在单引号中:
... AND date = '{$date}'";否则 2014-07-14 将被评估为 1993,这不是您想要的。更好地使用带参数的准备好的语句。这也将解决 sql 注入漏洞。