警告:PHP中的字符串偏移量非法


Warning: Illegal string offset in PHP

我想打印出具有内部联接的用户的数据,但这不起作用。数组在函数中和foreach之前正确填充,但它一直告诉我:

警告:PHP 中的字符串偏移量非法

FOREACH 之前的数组

array (size=6)
  'user_id' => string '1' (length=1)
  'name' => string 'Vandenbergh' (length=11)
  'surname' => string 'Jan' (length=3)
  'avatar' => string '1394041001.jpg' (length=21)
  'member_id' => string '21' (length=2)
  'group_id' => string '18' (length=2)

函数

public function getMembersInfo($group_id)
{
    var_dump($group_id);
    $db = new Db();
    $select = "SELECT u.user_id, u.name, u.surname, u.avatar, g.member_id, g.user_id, g.group_id FROM tblusers u INNER JOIN tblgroup_member g ON u.user_id = g.user_id WHERE g.group_id=" . $group_id .  "";
//  $result = $db->conn->query($select);
    //return $data=$result->fetch_assoc();
    $result = $db->conn->query($select);
$result_data = mysqli_fetch_assoc($result);
    var_dump($result_data);
return $result_data;
}

PHP

$memberinfo = $group->getMembersInfo($group_id);
var_dump($memberinfo);

 <?php 
        var_dump($memberinfo)   ;
      foreach ($memberinfo as $info) {
            echo "<p>" . $info['name'] . $info['surname'] . "</p>";
      }
        ?>

您只能从getMembersInfo方法中获得一个数组,而不是一个数组数组。因此,当您编写foreach ($memberinfo as $info)时,您只对数据库中的一行进行迭代。

为自己注释行,然后查看:

var_dump($memberinfo);
//foreach ($memberinfo as $info) {
    $info = $memberinfo;
    echo "<p>" . $info['name'] . $info['surname'] . "</p>";
//}

要解决此问题,请删除foreach循环,或者将MySQL查询的结果附加到getMembersInfo()方法中的数组中。