在我的表'user_sightings'中,我允许每个用户有多个条目,所以看起来如下......
------------------------
ID | user_ID | postcode
1 39 ab12cd
2 39 sk91ab
3 39 ab44ix
运行我的查询后,我尝试使用以下内容打印出每个邮政编码...
echo $row["postcode"];
只有这只打印出该用户的第一个实例,这是否可以为用户获取所有实例并将其动态设置为变量?
查询:
$sth = $conn->prepare("SELECT * FROM directory, user_sightings WHERE directory.user_active != '' AND directory.ID = :uid AND user_sightings.user_ID = :uid");
$sth->execute(array(':uid' => $UID));
while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
echo $row["postcode"];
}
答案 0 :(得分:1)
您需要while
循环到fetch the rows,然后您可以在PHP中使用variable assignment为每个用户分配一个变量:
while($row ... {
${$row[user_ID]} = $row[postcode];
}
您将需要一种唯一标识变量的方法,因为那个user_ID
的最后一个实例将是我建议使用数组的变量的值。也许是这样的事情:
${'user_' . $row[user_ID]}[] = $row[postcode];
这样,$user_39
将成为包含(ab12cd, sk91ab, ab44ix)
的数组。
或者您可以将所有数据放入数组中:
$user_ID = $row[user_ID];
$array[$user_ID][] = $row[postcode];
这两个选项中的任何一个都会进入while
循环。
<强>澄清强>
如果您想为特定用户调用邮政编码,请先将数据放入多维数组:
while($row ... {
$user_ID = $row[user_ID];
$array[$user_ID][] = $row[postcode];
}
然后将像这样存储邮政编码(以下示例):
echo $array[39][0];
//ab12cd
echo $array[39][1];
//sk91ab
echo $array[39][2];
//ab44ix
[39]
代表user_ID
答案 1 :(得分:0)
使用PDO
$sth = $conn->prepare("SELECT * FROM directory, user_sightings WHERE directory.user_active != '' AND directory.ID = :uid AND user_sightings.user_ID = :uid");
$sth->execute(array(':uid' => $UID));
$sth->setFetchMode(PDO::FETCH_ASSOC);
while($row = $sth->fetch()) {
echo $row['postcode'] . "\n";
}