Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中使用PHP变量_Php_Mysql - Fatal编程技术网

在MySQL中使用PHP变量

在MySQL中使用PHP变量,php,mysql,Php,Mysql,我只是想知道为什么这个查询在浏览器上的PHP中不返回任何内容,而在MySQL工作台中使用时却返回大量的项目 $_POST['startdate'] $_POST['enddate'] 我通过回显这两个日期,然后使用相同的日期,并在MySQL工作台中获取返回的项目来获取日期 $_POST['startdate'] $_POST['enddate'] 所以我不确定为什么它在查询中不起作用。没有出现PHP或MySQL错误/警告 SELECT mantis_category_tab

我只是想知道为什么这个查询在浏览器上的PHP中不返回任何内容,而在MySQL工作台中使用时却返回大量的项目

$_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']-但如果你把它作为答案写下来,我会接受的。谢谢@已经完成了,干杯,不客气。