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];

これら 2 つのオプションのいずれかが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 に答える