MySQLi query returns only one row

mysqli, php, return, row

Solution

You need to loop through the results (as TheSmose mentioned)

while ($request_list_row = $request_list_result->fetch_array()) {
    echo $request_list['user_fullname'];
}

AND you need to send the resulting array `$request_list` to the template rather than `$request_list_row`.

Change this

'request_list' => $request_list_row //right here

to this

'request_list' => $request_list //right here

If you want more than just `user_fullname` in your template (and you don't have PHP >= 5.3 required for `mysqli_result::fetch_all`), then you will need to build up your own array inside the loop.

I don't know what your template code expects, but you could try

while ($request_list_row = $request_list_result->fetch_array()) {
    echo $request_list[] = $request_list_row;
}

Problem

This code only returns one row, but it should return 2 rows. I have tried the SQL in phpMyAdmin and it perfectly returned 2 rows. What am I doing wrong here? ``` $request_list_result = $mysqli->query(" SELECT buddy_requester_id, buddy_reciepient_id, user_id, user_fullname FROM sb_buddies JOIN sb_users ON buddy_requester_id=user_id WHERE buddy_status='0' AND buddy_reciepient_id='". get_uid() ."'"); $request_list_row = $request_list_result->fetch_array(); echo $request_list['user_fullname']; ``` By the way, the code above is getting process to profile.php via following script: ``` $index = new Template('views/template/one.php', array( 'subtitle' => 'Dashboard', 'stylesheets' => array('/assets/css/profile.css'), 'scripts' => array('/assets/js/dashboard.js'), 'sidebar' => 'sidebar.php', 'content' => 'views/profile.php', 'errors' => $errors, 'successes' => $successes, 'request_list' => $request_list_row //right here ), true); ```

Original source