为什么不这样做? 这是一个循环:
$postdate = date( "j F", strtotime( $row['insert_date'] ) );
if ($postdate == date("j F")) {$postdate = "today"};
$table .= bla bla bla "$postdate";
它在浏览器中的'if语句行'中出错...
由于
答案 0 :(得分:4)
分号需要在括号内,如下所示:
if ($postdate == date("j F")) {$postdate = "today";}
答案 1 :(得分:3)
您的$table .= bla bla bla "$postdate";
行错了,应该是:
$table .= 'bla bla bla' . $postdate;
答案 2 :(得分:2)
您的第三行格式错误。试试这个:
$table .= "bla bla bla $postdate";
答案 3 :(得分:0)
您可以让MySQL服务器进行比较(如果您愿意)
SELECT
x,y,z,insert_date, Date(insert_date)=Curdate() as today
FROM
foo
WHERE
somecondition....
如果日期等于“今天”,则字段today
将包含1,否则为0
编辑:您只是“仅”比较时间戳的日/月部分。您可以使用Day() / Month()函数提取这些部分,尽管解决方案失去了一些“优雅”的方式。我会考虑像
SELECT ... (Date(insert_date)-Curdate()) mod 10000 as today ...
一个丑陋的黑客:(
e.g。
$pdo = new PDO('mysql:host=...;dbname=...', '...', '...');
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
// example table
$pdo->exec('CREATE TEMPORARY TABLE foo (id int auto_increment, insert_date TIMESTAMP, primary key(id))');
// insert three rows, only the second is "for today"
$pdo->exec('INSERT INTO foo (insert_date) VALUES (Now()-Interval - 2 day), (Now()), (Now()-Interval + 1 day)');
foreach( $pdo->query('SELECT id, insert_date, Date(insert_date)=Curdate() as today FROM foo') as $row ) {
echo
$row['today'] ? '+' : '-',
$row['id'], ' ', $row['insert_date'], "\n";
}
打印(现在在我的机器上)
-1 2009-10-21 17:03:55
+2 2009-10-19 17:03:55
-3 2009-10-18 17:03:55