我有这样的剧本:
mysql_connect('localhost', 'xxx', 'xxx');
mysql_select_db('xxx');
$sql = "SELECT * FROM rl_cronjobs";
$sql = mysql_query($sql);
$row = mysql_fetch_array($sql);
$sunday = $row['next_sunday'];
$today = date('Y-m-d');
if($sunday == $today){
$sql = "DELETE * FROM xxx WHERE stala != 1";
$sql = mysql_query($sql);
echo $nextsunday;
$nextsunday = strtotime("next Sunday");
$nextsunday = date('Y-m-d', $nextsunday);
$sql = "UPDATE xxx SET next_sunday = $nextsunday";
$sql = mysql_query($sql) or die (mysql_error());
echo $nextsunday;
}
在MySQL中,它的价值是:1984 我需要它是下周日的正常日期
MySQL表行的类型是varchar,因为当我设置tu日期时它不会更新。有什么帮助吗?
答案 0 :(得分:1)
您似乎在更新查询中遗漏了一些引号"
或'
。你可能想写:
$sql = "UPDATE xxx SET next_sunday = '$nextsunday'";
旁注: myslq_*
函数为deprecated,您不应再在新代码中使用它们了。
答案 1 :(得分:1)
不要在varchar字段中存储日期。 Mysql有这些东西的日期,日期时间和时间戳字段,使用它们打开了一个新的可能性世界。例如。你的“下一个星期日”计算可以简单地完成:
UPDATE xxx SET next_sunday = NOW() + INTERVAL (8 - DAYOFWEEK(NOW())) DAY
没有涉及PHP时间函数。请注意,此特定功能将始终选择真正的下一个星期日,因此如果您在星期日运行此代码,您将获得接下来几周的星期日,而不是“今天”,例如:
'2012-12-08' (Saturday) -> '2012-12-09'
'2012-12-09' (Sunday) -> '2012-12-16'
'2012-12-10' (Monday) -> '2012-12-16'
同样,请注意您在定义之前尝试回显$nextsunday
。