PHP mysqli_fetch_assoc请求帮助

时间:2014-07-14 11:46:02

标签: php arrays database while-loop

这可能已被提出并已经回答过,但我找不到适用于我想做的解决方案。我需要确定mysqli_fetch_assoc($ result)创建的关联数组的结尾。我的代码是:

$query = "SELECT * " .
         "FROM songs;";

$result = mysqli_query($connection, $query);
$number = mysqli_num_rows($result);

while($row = mysqli_fetch_assoc($result)){

    if($number !== 0){
        echo "{'title':'" .$row['song_name'] .
             "'file':'" . $row['song_path'] . "'},<br /><br />"; 
    } else {
        echo "{'title':'" .$row['song_name'] .
             "','file':'" . $row['song_path'] . "'}<br /><br />"; 
    }
    $number--;


}

有人请告诉我我做错了什么。我想要做的是回显“if”语句的第一部分,如果行是数组中的最后一行,我想要回显“在两个break标记之前没有逗号的行。”它返回所有数据库中的行,但是如果它是数组的末尾,我就无法删除逗号。我有一段时间的鲸鱼。我知道这可能很简单,但我是PHP的新手它让我陷入困境。请帮助!

3 个答案:

答案 0 :(得分:1)

你能试试吗,

  $i=1;
  while($row = mysqli_fetch_assoc($result)){    
        $comma =",";    
        if($i==$number){
            $comma ="";
        }   
        echo "{'title':'" .$row['song_name'] .
        "'file':'" . $row['song_path'] . "'}".$comma."<br /><br />";
        $i++;

  }

答案 1 :(得分:0)

你应该试试

 ... 
 if($number > 1){
 ...

或者你可以这样做

  ...
  $json = '';
  while($row = mysqli_fetch_assoc($result)){

      $json .=  "{'title':'" .$row['song_name'] .
         "'file':'" . $row['song_path'] . "'},"; 
  }

  if(strlen($json) > 0)
       $json = substr($json,0, strlen($json)-1);

  echo $json;

答案 2 :(得分:0)

在一行结束后使用$ number--所以在处理完所有行后$ number将等于0。所以你需要做的就是在所有if子句

之前加上$ number--
 while($row = mysqli_fetch_assoc($result)){
     $number--;//move to here
     if($number !== 0){
         echo "{'title':'" .$row['song_name'] .
              "'file':'" . $row['song_path'] . "'},<br /><br />"; 
     } else {
         echo "{'title':'" .$row['song_name'] .
              "','file':'" . $row['song_path'] . "'}<br /><br />"; 
     }
     //$number--; moved up


  }

现在它应该有效!! :)