dronthpi05943 2016-07-27 07:04
浏览 460
已采纳

mysqli_fetch_assoc仅返回数组的第一个元素

I'm working on a project, where the logged in user should be able to post notes on the homepage, and being logged in the certain user's notes should be printed above the new note form. I've written a function for that, where the mysqli_query recognizes all the 6 entries I have, but the mysqli_fetch_assoc prints only the first note out of 6. What could I do wrong? Here is my code:

<?php    
    function find_notes_by_id($user_id) {
    global $connection;
    
    $safe_user_id = mysqli_real_escape_string($connection, $user_id);
    
    $query = 'SELECT content ';
    $query .= 'FROM notes ';
    $query .= 'WHERE user_id = '.$safe_user_id;
    $result = mysqli_query($connection, $query);
 
    //mysqli_result Object ( [current_field] => 0 [field_count] => 1 [lengths] => [num_rows] => 6 [type] => 0 )

    confirm_query($result);

    $row = mysqli_fetch_assoc($result);
    //Array ( [content] => First! ) = it only shows the very first element
    return $row;
}
?>

<?php
$notes_set = find_notes_by_id($userRow['id']);
  foreach($notes_set as $note){
    echo $note;
    echo "<br />";
  }
?>

enter image description here

</div>
  • 写回答

6条回答 默认 最新

  • doubinchou4219 2016-07-27 07:09
    关注

    1.You need to iterate over your result-set object through while()

    2.Save all your data to an array and then return that array to get all records

    like below:-

    <?php    
      function find_notes_by_id($user_id) {
       global $connection;
    
        $safe_user_id = mysqli_real_escape_string($connection, $user_id);
    
        $query = "SELECT `content` FROM `notes` WHERE `user_id` = $safe_user_id";
        $result = mysqli_query($connection, $query);
    
        confirm_query($result);
    
        $final_data = array(); // create an array
        while($row = mysqli_fetch_assoc($result)){ // iterate over the result-set object to get all data
            $final_data[] = $row; //assign value to the array
        }
        return $final_data; // return array
      }
    ?>
    

    Now:-

    <?php
    $notes_set = find_notes_by_id($userRow['id']);
    
    print_r($notes_set) ; // print result to check array structure so that you can use it correctly in foreach
      foreach($notes_set as $note){
        echo $note['content'];
        echo "<br />";
      }
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办