2012-12-01 195 views
3

该代码只返回一行,但它应该返回2行。我已经尝试过在php myadmin中的SQL,它完美地返回了2行。我在这里做错了什么?php mysqli只返回一行

$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']; 

顺便说一句,上面的代码也越来越过程通过下面的脚本profile.php:

$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); 

回答

2

你需要遍历的结果(如TheSmose提到)

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

你需要的结果数组$request_list发送到模板,而比$request_list_row

更改此

'request_list' => $request_list_row //right here 

这个

'request_list' => $request_list //right here 

如果你需要的不仅仅是user_fullname更在你的模板(和PHP> =需要5.3 mysqli_result::fetch_all你没有),那么你需要在循环内建立自己的数组。

我不知道你的模板代码所期待的,但你可以尝试

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

您可以通过结果需要循环。就目前而言,你只是取得第一排。

$uid = get_uid(); 
$sql = "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='{$uid}'"; 

$request_list_result = $mysqli->query($sql); 

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

嗯。我明白你的观点,尝试过但它不起作用。 请检查我的最后一次编辑,如果这可能会影响您的答案:-) – simon

5
mysqli_result::fetch_array 

只获取一行作为数组,你正在寻找

mysqli_result::fetch_all 

获取所有行。这里

更多信息

http://php.net/manual/en/mysqli-result.fetch-all.php

+0

如果我使用fetch_all,如下所示:$ request_list_result-> fetch_all(); 它说:调用未定义的方法mysqli_result :: fetch_all() – simon