我需要创建一个脚本,将数据库中的一个字段(存储日期,类型为“TEXT”,并且无法更改DATE)与当前服务器日期进行比较。
日期编码如下“1380571547”,因此我需要使用strftime()
对其进行解码。例如,使用strftime
解码的此字段对应于此"Sep-30-2013, 22:05"
我需要的是将这些字段与当前日期进行比较,并根据该条件在另一个字段中写下“过期”字样。
为实现这一目标,我制作了这段代码:
<?php
require("connection.php");
$today = strftime('%b-%d-%Y, %H:%M');
$exp_date = mysql_query("SELECT numbers FROM date");
while($row = mysql_fetch_array($exp_date))
{
echo (strftime ( '%b-%d-%Y, %H:%M', $row ['numbers'])). "<br />";
}
if ($exp_date < $today) {
$sql = "INSERT INTO date (changed) VALUES ('EXPIRED')";
$result = mysql_query($sql);
echo "ADDED!";
}
?>
但是,这段代码不起作用,有人可以帮帮我吗?
答案 0 :(得分:1)
PHP不是我的强项,但在我看来,条件是在数组上进行比较,
IE:
if ($exp_date < $today) // will always be false.
您的代码可能需要看起来更像这样。
while($row = mysql_fetch_array($exp_date))
{
if ($row[0] < $today)
{
$sql = "Update date set changed = VALUE where rowid = rowid";
$result = mysql_query($sql);
echo "ADDED!";
}
}
说过我可能会在SQL中使用case语句进行比较和更新,
Update Date
set changed = case when number > ExpiryDate
then "Expired"
else "Current"
end
答案 1 :(得分:0)
您可以在一个查询中完成所有这些操作:
UPDATE `date` set `changed`='Expired' where date(now()) > date(from_unixtime(`numbers`))
但这不是您的代码尝试做的事情。您的第二个块似乎是在新行中插入单词Expired
,而不是更新任何内容。
请注意,表名date
应包含在反引号中以避免与MySQL关键字发生任何可能的冲突
答案 2 :(得分:0)
我不理解带插入的第二个代码块。我会在循环中做一个更新。但是如果你要这样做,它可能会在一个组合的更新声明中完成。