0

こんにちは私はユーザー名で1つのユーザープロファイルフィールド値(寄付ボタンコード)を取得しようとしています。これが表です

ここに画像の説明を入力してください

私はMySQLと学習の経験があまりないので、いくつかの条件で試しましたが、どういうわけか、ユーザープロファイルテーブルでユーザー名を確認して寄付コンテンツを取得する方法を理解できません。

SELECT ^users.userid, ^users.handle, ^userprofile.title, ^userprofile.content 
FROM ^users, ^userprofile
WHERE ^userprofile.userid=^users.handle AND title= 'donation'

を使用して出力を取得しようとしていますecho $donation['content']

もちろん、クエリステートメントが正しくないことはわかっていますが、今は書き方がわかりません。私を助けてください。

注:^はデータベースプレフィックスに他なりません

4

2 に答える 2

3

あなたがする必要があるのは、テーブル結合を実行することです。

(技術的には、FROMフィールドにコンマを使用して結合を実行していますが、読みやすさだけでなく、クエリで結合のタイプを指定するのが賢明です)。

ユーザーが複数の寄付をした場合など、1つだけの結果よりも多くの結果が得られる可能性があります。いずれにせよ、クエリ結果から行をフェッチする必要があります(十分なコードを投稿しなかったため、フェッチしたかどうかはわかりません)。複数のテーブルから結果を取得しているため、行が返す配列を出力します。

$result = mysql_query(/* YOUR QUERY */)
while ($row = mysql_fetch_assoc($result)) {
    //do stuff here later.
}
print_r($row);

クエリがどのような出力を提供するかがわかれば、whileループで必要な列にアクセスできます。

また、mysql_関数が減価償却されていることにも言及する必要があります。SQL情報にアクセスするには、mysqli_関数またはpdo::queryを使用することをお勧めします。

于 2013-01-20T19:58:23.350 に答える
1

最も単純な解決策はネストされたSELECTです

SELECT `content` FROM `userprofile` WHERE `userid` = (SELECT `id` FROM `users` WHERE `handle` = ? LIMIT 1) AND `title` = 'donation' LIMIT 1
于 2013-01-20T20:08:38.653 に答える