2012-04-19 77 views
0

我想遍历MySQL表,并根据循环所在的当前行和前一个循环执行计算。循环遍历MYSQL表,并对行和前一行字段执行操作PHP

说我的表有2列 - Film_idFilmRelease,我将如何循环并回显出当前的FilmRelease和上一行的列值?

谢谢你们

我有到这个阶段,但由于某种原因它不打印出任何东西

<?php 
mysql_connect("localhost", "****", "*****") or die(mysql_error()); 
mysql_select_db("*****") or die(mysql_error()); 

$sql = mysql_query("SELECT FilmRelease FROM Films_Info") 
or die(mysql_error()); 

$last_value = null; 

while ($row = mysql_fetch_assoc($sql)) { 

    if (!is_null($last_value)) { 

    print date_diff($row['FilmRelease'], $last_value) . "<BR>"; 
    } 

    $last_value = $row['FilmRelease']; 
} 
+0

欢迎SO。也许你应该首先看看stackoverflow.com/questions/how-to-ask。 – dgw 2012-04-19 11:11:46

回答

2

像这样:

$last_value = null; 

while ($row = mysql_fetch_assoc($sql)) { 

    if (!is_null($last_value)) { 
    $interval = date_diff(new DateTime($row['FilmRelease']), new DateTime($last_value)); 
    echo $interval->format('Y-m-d'); 
    } 

    $last_value = $row['FilmRelease']; 
} 
+0

谢谢你的回复,我用你的代码编辑了我的问题,但是它没有打印任何东西:S – DIM3NSION 2012-04-19 11:40:18

+0

'date_diff()'期待[DateTime对象](http://php.net/manual/en/class.datetime。 PHP)。所以试一下:'print date_diff(new DateTime($ row ['FilmRelease']),new DateTime($ last_value));' – 2012-04-19 12:18:21

+0

我收到这个错误可捕获的致命错误:类DateInterval的对象无法转换为字符串 - 列结构类型设置为日期而不是日期时间。会导致问题吗? – DIM3NSION 2012-04-19 12:21:55