0

2 つのテーブル (claim_pics と claiminfo) があり、結果ページのクエリを実行しています。

2 つのテーブル claim_id ( claiminfo.claim_id = claim_pics.claim_id ) が一致する場合、うまく機能します。

ただし、claim_id を持つテーブルが 1 つしかなく、つまり claiminfo にあり、一致する claim_id がない場合、行のすべての属性が claim_id を除いて表示されます。

claim_id がないため、ユーザーが編集ボタンをクリックしても、移動先を伝える claim_id はありません。

一致するかどうかに関係なく、claim_id の $results を提示する必要があります。アイデアや回避策はありますか?

ありがとう。

$query   = "SELECT * FROM claiminfo 
                          LEFT JOIN ( claim_pics ) 
                          ON ( claiminfo.claim_id = claim_pics.claim_id )  
            WHERE( userid='$userid' )   
            ORDER BY claiminfo.ts
            DESC LIMIT 200";

// 返すだけ

写真と情報の両方が一致する claim_ids

                  $result = mysql_query( $query );

                  while( $row = mysql_fetch_assoc( $result ) ) { 


                                    $namelocation =      $row['namelocation'];
                                    $claimholder =   $row['claimholder'];
                                    $occasion =      $row['occasion'];
                                    $geotag =    $row['geotag'];
                                    $lat =   $row['lat'] ;
                                    $lng =   $row['lng'];
                                    $claim_id = $row['claim_id']; 
                                    $img = $row['location'];




                                     $html = " ... "
4

1 に答える 1

0

コメントが指摘しているようにclaim_id、空のclaim_pics行からの null が を空白にしている可能性があります$row['claim_id']。これを回避する最も簡単な方法は、明示的に選択してエイリアスを作成することclaiminfo.claim_idです。

$query   = "SELECT *, claiminfo.claim_id AS id FROM claiminfo 
                          LEFT JOIN ( claim_pics ) 
                          ON ( claiminfo.claim_id = claim_pics.claim_id )  
            WHERE( userid='$userid' )   
            ORDER BY claiminfo.ts
            DESC LIMIT 200";

その後、変数を使用して claim_id を確実に取得できます$row['id']

より一般的な注意として、この状況は、一般的にSELECT * を使用しない方がよい理由を示しています。

于 2012-10-16T02:56:00.083 に答える