我想打印出具有内部联接的用户的数据,但这不起作用。数组在函数中和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()
方法中的数组中。