2012-10-24 135 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

請參閱編輯的答案 –