-1

私はそれがどのように機能するかを理解するのに本当に苦労しているので、PHPを使用したJOINに関してあなたが私のために物事を明確にしてくれることを本当に望んでいます.

基本的に、プレミアム メンバー用とこれらのメンバーのファン用の 2 つのテーブルがあります。そこで、メンバー ( $memberid) がファンである「プレミアム」テーブルから特定の情報を取得したいと考えています。

Premium = id, name, avatar, town, etc, etc
Fans = fan($memberid), fanee(Premium ID)

だから私は現時点でこのコードを持っています:

<?php
$get_connections_sql = "SELECT id, name, avatar, town FROM premium LEFT JOIN fans ON fans.fanee=premium.id WHERE fans.fan=$memberid LIMIT 18";
$get_connections_res = mysqli_query($con, $get_connections_sql);
if(mysqli_affected_rows($con)>0){
    while ($connections = mysqli_fetch_assoc($get_connections_res)){
        $connectionid = $connections['id'];
        $connectionname = $connections['name'];
        $connectiontown = $connections['town'];
        $connectionavatar = $connections['avatar'];

    $connections .= "

        <div class=\"connectionHolder\"><img class=\"connection\" src=\"uploads/avatars/pro/$connectionavatar\" /></div>

    ";
    }
}else{

    $connections = "

        <div class=\"noContent\">There are no connections to be shown</div>

    ";

}
?>

これはelse条件を返しているので、私のJOIN行に何か問題があるに違いありません - 誰でも私を正しい方向に向けてください。

4

1 に答える 1

0

「id」列があいまいだとおっしゃいました。これは、クエリで 2 つのテーブルが両方とも「id」列で参照されており、MySQL がどちらを選択すればよいかわからないためです。次のようにテーブル名を追加することで、具体的にすることができます。

SELECT premium.id, ...

さらに、mysqli_num_rows()代わりにmysqli_affected_rows(). クエリは行 (更新、削除、挿入など) に影響を与えないため、代わりに一連の行を返します。

mysql_num_rows()$get_connections_res接続ではなく、クエリの結果をそのパラメータ(あなたの場合)として受け取ります。結果が有効であることを確認するには、最初に if の前に $get_connections_res の値をチェックします...偽の場合、クエリにエラーがあります。mysqli_error()エラーを報告するために使用します。

于 2013-05-29T10:23:01.450 に答える