Php阵列显示

时间:2011-12-28 09:11:07

标签: php mysql

我无法弄清楚如何使之前的功能正常工作。我希望这可以检查数组最后一项的mysql字段'title'是否等于当前项目,如果我想要它打印标题。

$usernotes = mysql_query("select * from notes where user_id= '$user_id'");
Print "<table border=0>"; 
 while($info = mysql_fetch_array( $usernotes )) 
 {  
    if( $info['title'] != prev($info['title') )
    {
    Print "<tr><td><a href=\"mainpage.php?note_id=".$info['title']."\">".$info['title'] . "</a></td></tr> "; 
    }
 } 
 Print "</table>"; 

它给了我错误

Warning: prev() expects parameter 1 to be array

我该怎么办?

由于

5 个答案:

答案 0 :(得分:2)

函数prev()用于在逐项读取数组时更改当前索引。 但是你的循环不是读取数组,而是读取SQL记录集。

这是应该有用的东西:

Print "<table border=0>";
$prev_title = '';
 while($info = mysql_fetch_array( $usernotes )) 
 {  
    if( $info['title'] != $prev_title )
    {
    $prev_title = $info['title'];
    Print "<tr><td><a href=\"mainpage.php?note_id=".$info['title']."\">".$info['title'] . "</a></td></tr> "; 
    }
 } 
 Print "</table>"; 

答案 1 :(得分:2)

这是一个小解决方法。

print "<table border=0>"; 
$previousValue = "";
 while($info = mysql_fetch_array( $usernotes )) 
 {  
    if( $info['title'] != $previousValue) )
    {
        $previousValue = $info['title'];
    print "<tr><td><a href=\"mainpage.php?note_id=".$info['title']."\">".$info['title'] . "</a></td></tr> "; 
    }
 } 
 print "</table>"; 

您的代码中几乎没有问题。

  1. 必须是“打印”而不是“打印”
  2. 您必须确保您的sql结果集始终按标题排序。否则上面的代码将无法正常工作。

答案 2 :(得分:1)

这应该有效:

$prevTitle = '';
while($info = mysql_fetch_array( $usernotes )) 
 {  
    if( $info['title'] !== $prevTitle )
    {
       Print ...
    }
    else 
    {
        $prevTitle = $info['title'];
    }
 } 

答案 3 :(得分:0)

我认为问题是你错过了prev()函数中的结束方括号。

答案 4 :(得分:0)

您忘记了在prev附近关闭]

Print "<table border=0>"; 
 while($info = mysql_fetch_array( $usernotes )) 
 {  
    if( $info['title'] != prev($info['title']) )
    {
    Print "<tr><td><a href=\"mainpage.php?note_id=".$info['title']."\">".$info['title'] . "</a></td></tr> "; 
    }
 } 
 Print "</table>";

所以你收到了这个错误。尝试上面的代码并检查重新结果。