在MySQL中使用PHP变量
我只是想知道为什么这个查询在浏览器上的PHP中不返回任何内容,而在MySQL工作台中使用时却返回大量的项目在MySQL中使用PHP变量,php,mysql,Php,Mysql,我只是想知道为什么这个查询在浏览器上的PHP中不返回任何内容,而在MySQL工作台中使用时却返回大量的项目 $_POST['startdate'] $_POST['enddate'] 我通过回显这两个日期,然后使用相同的日期,并在MySQL工作台中获取返回的项目来获取日期 $_POST['startdate'] $_POST['enddate'] 所以我不确定为什么它在查询中不起作用。没有出现PHP或MySQL错误/警告 SELECT mantis_category_tab
$_POST['startdate']
$_POST['enddate']
我通过回显这两个日期,然后使用相同的日期,并在MySQL工作台中获取返回的项目来获取日期
$_POST['startdate']
$_POST['enddate']
所以我不确定为什么它在查询中不起作用。没有出现PHP或MySQL错误/警告
SELECT
mantis_category_table.name,
mantis_bug_history_table.bug_id,
FROM_UNIXTIME(mantis_bug_table.date_submitted, "%m-%d-%Y") AS DATE2,
FROM_UNIXTIME(min(mantis_bug_history_table.date_modified), "%m-%d-%Y") AS FirstOfdate_modified,
ROUND((min(mantis_bug_history_table.date_modified)- mantis_bug_table.date_submitted)/ 86400, 1) as day_difference
FROM (mantis_bug_table INNER JOIN mantis_bug_history_table
ON
mantis_bug_table.id = mantis_bug_history_table.bug_id)
INNER JOIN
mantis_category_table ON mantis_bug_table.category_id = mantis_category_table.id
WHERE
FROM_UNIXTIME(mantis_bug_table.date_submitted, "%m-%d-%Y")
BETWEEN '.$_POST['startdate'].' AND '.$_POST['enddate'].'
GROUP BY
mantis_category_table.name, mantis_bug_table.category_id, mantis_bug_table.date_submitted, mantis_bug_table.status, mantis_bug_history_table.bug_id, mantis_bug_history_table.field_name, mantis_bug_history_table.new_value
HAVING
(((mantis_bug_table.status)<>90) AND ((mantis_bug_history_table.field_name)="status") AND ((mantis_bug_history_table.new_value)="50"))
ORDER BY
mantis_category_table.name, mantis_bug_table.date_submitted'
谢谢。首先,在将用户输入传递到查询之前,您应该始终转义用户输入,或者更好的是,使用准备好的语句。看这个
其次,必须确保从PHP接收的日期值的格式与存储在数据库中的日期值的格式相同。由于您在列中存储的是unix时间,因此可以使用将发布的日期转换为适合与列值直接比较的unix时间,也可以使用将其转换为有效的日期格式,就像您在当前比较中尝试的那样。首先,在将用户输入传递给查询之前,应该始终转义用户输入,或者更好的做法是使用准备好的语句。看这个 其次,必须确保从PHP接收的日期值的格式与存储在数据库中的日期值的格式相同。由于您正在列中存储unix时间,您可以使用将发布的日期转换为适合与列值直接比较的unix时间,也可以使用将其转换为有效的日期格式,就像您在当前比较中尝试的那样。根据OP的意愿: 按如下方式连接您的值:
BETWEEN "'.$_POST['startdate'].'" AND "'.$_POST['enddate'].'"
因为我们正在处理字符串值,所以缺少所需的引号
日期可以包含连字符和冒号,例如2015-01-05 22:00,这将引发SQL错误
然而,我想指出,使用这种类型的查询是开放的
使用,或者更安全。按照OP的意愿:
按如下方式连接您的值:
BETWEEN "'.$_POST['startdate'].'" AND "'.$_POST['enddate'].'"
因为我们正在处理字符串值,所以缺少所需的引号
日期可以包含连字符和冒号,例如2015-01-05 22:00,这将引发SQL错误
然而,我想指出,使用这种类型的查询是开放的
使用,或者,它们更安全。您是否使用POST变量回显查询并使用MySQL Workbench运行它?可能是连接问题。在“$\u POST['startdate']”和“$\u POST['enddate']”之间,请给出一个whirl@Fred-实际上更像是这样:介于“$\u POST['startdate']”和“$\u POST['enddate']-但如果你把它作为答案写下来,我会接受的。谢谢@navlag已经完成了,干杯,不客气。您是否用POST变量回荡了查询并使用MySQL Workbench运行了它?可能是连接问题。在“$\u POST['startdate']”和“$\u POST['enddate']”之间,请给出一个答案whirl@Fred-实际上更像是这样:介于“$\u POST['startdate']”和“$\u POST['enddate']-但如果你把它作为答案写下来,我会接受的。谢谢@已经完成了,干杯,不客气。