0

在我的表'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"];
 }
4

2 回答 2

1

您需要一个while循环来获取行,然后您可以使用PHP 中的变量赋值为每个用户分配一个变量:

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

于 2012-10-24T19:26:23.300 回答
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";  
    }  
于 2012-10-24T19:27:59.587 回答