Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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
Php 比较日期时间时,类DateTime的对象无法转换为字符串_Php_Datetime - Fatal编程技术网

Php 比较日期时间时,类DateTime的对象无法转换为字符串

Php 比较日期时间时,类DateTime的对象无法转换为字符串,php,datetime,Php,Datetime,我有这个字符串: $actualTimePreformatted="16:46:00"; 我需要mysql选择tu_id number294,因为该id有一个包含此时间的时间范围: 为此,我将给定的时间字符串传递给一个时间类型数据,然后通过比较其内容来选择转折点: $actualTime= DateTime::createFromFormat('H:i:s', $actualTimePreformatted); $timeMatchingTurns=mysql_query("SELECT

我有这个字符串:

$actualTimePreformatted="16:46:00";
我需要mysql选择tu_id number294,因为该id有一个包含此时间的时间范围:

为此,我将给定的时间字符串传递给一个时间类型数据,然后通过比较其内容来选择转折点:

$actualTime= DateTime::createFromFormat('H:i:s', $actualTimePreformatted);

$timeMatchingTurns=mysql_query("SELECT * FROM turn_conf WHERE
        (tu_mon_1_s >= $actualTime AND tu_mon_1_e <= $actualTime) OR
        (tu_mon_2_s >= $actualTime AND tu_mon_2_e <= $actualTime) OR
        (tu_mon_3_s >= $actualTime AND tu_mon_3_e <= $actualTime)"); 

$finalResult=mysql_fetch_array($timeMatchingTurns);

$turn_id=$finalResult['tu_id'];
$actualTime=DateTime::createFromFormat('H:i:s',$actualTimePreformatted);
$timeMatchingTurns=mysql\u查询(“从turn\u配置中选择*

(tu_mon_1_s>=$actualTime和tu_mon_1_e=$actualTime和tu_mon_2_e=$actualTime和tu_mon_3_e您可以更改此行:

$actualTime= DateTime::createFromFormat('H:i:s', $actualTimePreformatted);
通过以下方式:

$actualTimeObj = DateTime::createFromFormat('H:i:s', $actualTimePreformatted);
$actualTime = $actualTimeObj->format('H:i:s');
您正在将对象用作字符串

此外,查询应在变量周围加上单引号,如:

$timeMatchingTurns=mysql_query("SELECT * FROM turn_conf WHERE
        (tu_mon_1_s >= '$actualTime' AND tu_mon_1_e <= '$actualTime') OR
        (tu_mon_2_s >= '$actualTime' AND tu_mon_2_e <= '$actualTime') OR
        (tu_mon_3_s >= '$actualTime' AND tu_mon_3_e <= '$actualTime')"); 
$timeMatchingTurns=mysql\u query(“从turn\u conf中选择*

(tu_mon_1_s>='$actualTime'和tu_mon_1_e='$actualTime'和tu_mon_2_e='$actualTime'和tu_mon_3_e
$actualTime
是一个(日期时间)对象,而您正在将其转储到查询中的字符串中。这是一个错误。不用说,您应该使用准备好的语句。现在这已经不是问题了-在SQL中使用$actualTimePreformatted,而不是$actualTime。@DamienPirsy事实是“tu\u mon\u 1\s”所有其他类似的字段都是时间字段,而不是字符串。如果我将字符串信息与时间字段进行比较,不使用formattinf$actualTime,它会给出“mysql\u fetch\u array()期望参数1是资源,布尔给定”。我认为错误是由于两个数据的性质不同造成的…@JonSturdevant我尝试了一下,但只得到了“mysql\u fetch\u array()期望参数1是资源,布尔给定”错误。认为这是因为没有格式化$actualTimePreformatted–@Biomehanika在SQL中的变量周围加上单引号。例如,
“…WHERE(tu_mon_1_s>=“$actualTime”…”
Hi Leticia。我已经这样做了,它给我的错误与我在SQL中直接使用$actualTimePreformatted而不是$actualTime时相同:“mysql_fetch_array()希望参数1是资源,布尔给定”确定,应用编辑后,不再出现错误,但“$turn_id=$finalResult['tu_id'];”不打印任何内容..是否应将其存储在那里?mysql_fetch_array返回非关联数组,尝试使用$finalResult[0];或者应该使用mysql_fetch_assoc()与mysql_fetch_array()相反,我认为select肯定存在一些问题,可能是比较的数据的性质……如果我进行此查询,结果是0(应该选择ID 294,不是吗?):从turn_conf中选择*(tu_mon_1_s>='17:13:00'和tu_mon_1_e)