我正在尝试通过将输入PHP变量与表中已经存在的条目的时间戳进行比较来过滤出进入MySQL表的重复值,并且只有当它们不匹配时,才将输入PHP变量输入到表中。

$user1_date = mysql_real_escape_string($user1_date); // the date variable
$user1_temp1 = mysql_real_escape_string($user1_temp1);
$user1_temp2 = mysql_real_escape_string($user1_temp2);
$user1_temp3 = mysql_real_escape_string($user1_temp3);
$user1_date = date("Y-m-d H:i:s", strtotime($user1_date));  //Typecasting PHP variable into timestamp

$sql_check = "SELECT * FROM user_details WHERE temp_date ='$user1_date'";
$result_check = mysql_query($sql_check);
$num_rows_check = mysql_num_rows($result_check);

if ($num_rows_check == 0) // To check if there is no entry in the table with the same date and time as input PHP variable
{
$sql_insert = "INSERT INTO data_hour (user_id, temp1, temp_date, temp2, temp3)
VALUES (1,'$user1_temp1', '$user1_date', '$user1_temp2', '$user1_temp3')";
$result_insert = mysql_query($sql_insert);
}


temp_date是时间戳类型表中的一列。即使$user1_date与表中一项的temp_date(timestamp)列相同,它也认为它不相等,并将其插入表中,因此得到重复的值。我猜测WHERE temp_date = '$user1_date'无法正常工作。我已经完成的一些故障排除


'$user1_date'更改为$user1_date中的WHERE
声明
如下更改WHERE子句WHERE temp_date = (date)'$user1_date'


如果有人可以帮助我,那就太好了!

最佳答案

一个不错的简单解决方案是在Mysql表中为temp_date提供一个唯一索引,因为那样将不允许两次插入相同的值。这也将使您的操作更有效率,因为您不必每次都想插入SELECT *

但是,对于您的工作,我认为您遇到了问题。您的逻辑中有一些怪癖,所以我将在这里消除它们。 (希望吗?)这将使您的程序更整洁,并且即使不完全消除错误,也可以查明错误。



检查这段代码:

// $user1_date doesn't have a value here! //
$user1_date = mysql_real_escape_string($user1_date);
...
$user1_date = date("Y-m-d H:i:s", strtotime($user1_date));




错误1-您在设置值之前先对字符串进行转义。

您正在做的是在定义mysql_real_escape_string()之前正在使用$user1_date

更正:

// Getting better, but not done. //
$user1_date = date("Y-m-d H:i:s", strtotime($user1_date));
...
$user1_date = mysql_real_escape_string($user1_date);




错误2-您没有给date()函数适当的参数

PHP中的date()函数需要一个时间戳,它只是一个int。您可以使用time()轻松获得时间,因此应该可以解决您的问题

更正:

// You use strtotime($user1_date), but you should use time() //
$user1_date = date("Y-m-d H:i:s", time());
...
$user1_date = mysql_real_escape_string($user1_date);




这些都是小错误,但可能致命。就像我说的那样,您应该将temp_date分配给MySQL表中的UNIQUE INDEX,但请确保也纠正列出的这些错误。

让我知道事情的后续!

关于php - 使用PHP变量的MYSQL表中的时间戳之间的比较不起作用-PHP MYSQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22429419/

10-16 08:22
查看更多