MySQLi查询仅返回一行

5

这段代码只返回了一行数据,但实际上应该返回两行数据。我已经在phpMyAdmin中尝试过这个SQL语句,它完美地返回了两行数据。那么我在这里做错了什么呢?

$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);
3个回答

8

如果我像下面这样使用fetch_all:$request_list_result->fetch_all(); 它会显示:Call to undefined method mysqli_result::fetch_all() - simon

5
你需要循环遍历结果(正如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;
}

1

你需要循环遍历结果。目前为止,你只获取了第一行。

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

嗯,我明白你的意思,我尝试了一下,但它不起作用。 请检查我的最后一次编辑,看看它是否会对你的答案产生影响 :-) - simon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接