0

2 つのテーブルを結合する mysql データベースのクエリがあります。最初のテーブルでは、ID に基づいてレコードを取得するだけです。2 番目のテーブルでは、最初のテーブルの値に基づいて一致する場合と一致しない場合があります。一致するものがある場合は一致を取得したいのですが、そうでない場合は、結果のレコード セットの値が空であると考えられます。

クエリは正しい数のレコードを生成するようです。ただし、存在するはずのいくつかの変数の値にアクセスしようとすると、間違った名前を呼び出しているか、何らかの形でレコードセットにないため、何も取得できません。私はmysqlクエリについて少し曖昧なので、アドバイスをいただければ幸いです..

表1 公園

id | name | stateid 

表 2 訪れた公園

id | visited | parkid | userid

PHP スクリプト

$sql = "SELECT * 
FROM `parks` p
LEFT JOIN `parksvisited` pv
ON p.id = pv.parkid
WHERE p.stateid = '44'"

クエリを実行...

while($row = mysql_fetch_array($res))
{
if ($row['visited'] == 1) {
$visited = 1; }  
else {
$visited = 0; }
<a href="javascript:void(0);" onclick="loadParks(\''.$row['stateid'].'\',\''.$row['p.id'].'\',\''.$visited.'\');">Visited</a>

}

基本的に、stateid は取得しますが、p.id や Visited は取得していません。間違った名前を付けているか、結果から除外されている可能性があります...提案をありがとう。

4

1 に答える 1

1

p.idと のそれぞれがまたはではなく として返されるため、 が欠落している可能性がp.idあります。代わりにこれを試してください:pv.ididp.idpv.id

SELECT p.id pid,
       p.*,
       pv.id pvid,
       pv.*
FROM `parks` p
LEFT JOIN `parksvisited` pv
ON p.id = pv.parkid
WHERE p.stateid = '44'

pvまた、元のクエリから何かを選択しているようにも見えませんp。. この新しいクエリvisitedも同様に処理されるかどうかを確認してください。pidまた、 as$row['pid']ではなくasを必ず参照してください$row['p.id']

于 2012-07-10T13:42:53.817 に答える