在我的申请中,我试图用foreach打印信息。 SQL编写正确。当我执行var_dump
我的功能时,我会得到正确的信息:
$eventgroupinfo = $event->GetEventGroupInfoByEventGroupId($event_group_id);
var_dump($eventgroupinfo);
当我尝试将其打印出来时,它会出现此错误:
警告:非法字符串偏移
但是当我var_dump
时我得到了这些信息。我做错了什么?
foreach ($eventgroupinfo as $g) {
echo $g['user_id'] . $g['avatar'];
}
public function GetEventGroupInfoByEventGroupId($event_group_id)
{
$db = new Db();
$select = "SELECT
p.event_progress_id,
p.user_id,
p.event_progress_distance,
p.event_progress_date,
p.event_group_id,
u.user_id,
u.name,
u.surname,
u.avatar
FROM tblevent_progress p INNER JOIN tblusers u ON p.user_id = u.user_id
WHERE p.event_group_id = " . $event_group_id ;
var_dump($select);
$result = $db->conn->query($select);
return $data=$result->fetch_assoc();
}
}
array (size=8)
'event_progress_id' => string '1' (length=1)
'user_id' => string '1' (length=1)
'event_progress_distance' => string '2532' (length=4)
'event_progress_date' => string '2014-05-10 12:48:27' (length=19)
'event_group_id' => string '50' (length=2)
'name' => string 'Vandenbergh' (length=11)
'surname' => string 'Jan' (length=3)
'avatar' => string '139404100.jpg' (length=21)
答案 0 :(得分:1)
只需:
echo $eventgroupinfo['user_id'] . $eventgroupinfo['avatar'];
而不是
foreach ($eventgroupinfo as $g) {
echo $g['user_id'] . $g['avatar'];
}
<强> P.S。 : 由于$eventgroupinfo
是一维数组,您正在迭代它:
'event_progress_id'->'user_id'->...->'avatar'
因此$g
属于string
类型而不是array
所以不应该像$g['user_id']
那样访问$g
。
答案 1 :(得分:0)
你的foreach循环将为数组中的每个元素执行一次。在您的情况下,您将对每个进行迭代:
'event_progress_id'
'user_id'
'event_progress_distance'
'event_progress_date'
'event_group_id'
'name'
'surname'
'avatar'
如果您期望多个结果集(看起来像你想的那样),那么您需要从函数调用中返回一个多级数组:
public function GetEventGroupInfoByEventGroupId($event_group_id)
{
$db = new Db();
$select = "SELECT
p.event_progress_id,
p.user_id,
p.event_progress_distance,
p.event_progress_date,
p.event_group_id,
u.user_id,
u.name,
u.surname,
u.avatar
FROM tblevent_progress p INNER JOIN tblusers u ON p.user_id = u.user_id
WHERE p.event_group_id = " . $event_group_id ;
var_dump($select);
$result = $db->conn->query($select);
$entries = array();
while($data=$result->fetch_assoc())
{
$entries[] = $data;
}
return $entries;
}
然后你的循环应该为数据库中的每个条目输出一个实例。