5

此代码仅返回一行,但应返回 2 行。我已经在 phpMyAdmin 中尝试过 SQL,它完美地返回了 2 行。我在这里做错了什么?

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

3 回答 3

8
 mysqli_result::fetch_array

仅获取单行作为数组,您正在寻找

 mysqli_result::fetch_all

获取所有行。

更多信息在这里

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

于 2012-12-01T23:08:57.133 回答
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 required for mysqli_result::fetch_all),那么您将需要在循环中构建自己的数组。

我不知道您的模板代码期望什么,但您可以尝试

while ($request_list_row = $request_list_result->fetch_array()) {
    echo $request_list[] = $request_list_row;
}
于 2012-12-02T03:04:29.723 回答
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'];
}
于 2012-12-01T23:08:26.373 回答