2012-10-24 136 views
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"]; 
} 
+2

有什么实际的查询? – j08691

+0

你可以多加一点你的代码吗? – andrewsi

+0

我已添加我的查询@ j08691 – Liam

回答

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

变量赋值? 使用关联数组。它更清晰的方式 – Jarry

+0

感谢@njk,这将在我目前的循环内? – Liam

+0

@Liam两个选项中的任何一个都会进入你的'while'循环。 – Kermit

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"; 
    } 
+0

我会把它放在我目前的循环中吗?对不起,我很新的PDO – Liam

+0

请参阅编辑的答案 –