0

私はしばらくここで立ち往生しています多分あなたたちは私を助けることができますか?1つのテーブルからのデータベースレコードのテーブルを強調表示し、このテーブルのIDが2番目のテーブルにも存在するかどうかを確認します。
具体的に説明します。

Table 1: Projects (projectid pk)
Table 2: Reservations (projectid fk)

これを単純に保つための単純なサンプルコード:

while( $record=mysql_fetch_array($result) ) 
{
    $projectid=$record['projectid'];
    echo "<tr>". $projectid ."</tr>; 
}

これはうまく機能しています。DBに存在する各projectidを持つすべてのテーブル行を取得しますが、この$projectid変数を別のクエリに渡して、これが他のテーブルに存在するかどうかを確認し、存在する場合は別の何かをエコーアウトする方法はありますか?これはおそらくあまり意味をなさない私のコードですが、少なくともロジックはそこにあります...私は願っていますか?:

while( $record=mysql_fetch_array($result) ) 
{
    $projectid=$record['projectid'];
    $hasreservationquery = ("
                            SELECT * 
                            FROM reservelist rl
                                INNER JOIN project p on rl.projectid = p.projectid
                            WHERE rl.projectid = $projectid
                            ");
    $hasreservationqueryresult = mysql_query($hasreservationquery) or die(mysql_error());
    if ($hasreservationqueryresult > 1)
    {
    echo "<tr id='hasreservation'>";
    }
    else
    {
    echo "<tr>";
    }
    echo "". $projectid .""; 
}

残念ながら、これにより、実際に予約が含まれているテーブルだけでなく、強調表示されているすべてのテーブルが返されます。私は何が間違っているのですか?

前もって感謝します。

4

2 に答える 2

1

mysql_query は、影響を受ける行の量を返しません。

のようなものだと思います

if($hasreservationqueryresult && mysql_num_rows($hasreservationqueryresult) > 0)

それを除いて、私は間違いなくあなたのコードをもう少し良く整理し、変数名を再考します:)

于 2012-11-13T09:32:55.580 に答える
1

行数をチェックしているようには見えません。if ステートメントを変更する必要があります。

if (mysql_num_rows($hasreservationqueryresult) > 0)

これにより、1 つ以上の結果が返されるかどうかがチェックされます (強調表示する前に x + 1 の結果が返されるようにするには、> x に変更します)。

于 2012-11-13T09:29:54.713 に答える