1

クエリに複数のテーブルがあります

$query = mysql_query("SELECT * FROM reservation r, users u ...")

while( $fetch = mysql_fetch_assoc($query)){
    if($fetch['u.id'] == $fetch['r.id']) 
    ...

そして、ここに問題があります。テーブルに同じ列名があり、予約のIDとユーザーのIDを比較しようとすると、ユーザーのIDしか取得できません!!!

「*」を列名に置き換えて名前を変更することAS (SELECT s.id as sid ...)はできますが、もっと簡単な方法はありますか? 例:

4

1 に答える 1

2

2 つのテーブルの両方に同じ名前の列がある場合、連想配列内のこれらのフィールドの 1 つにしかアクセスできません。キーはフィールドの名前であるため、最初のフィールドは上書きされます。秒までに。

あなたが言うように、フィールドの名前を明示的に変更して、衝突しないようにすることです。- を使用して回避できる場合がありますがmysql_fetch_array、すべてのフィールドが表示されますが、インデックス番号でフィールドにアクセスする必要があります。したがって、テーブル構造を変更する場合は、コードを書き直す必要があります。

reservationIDより良い方法は、可能であれば異なるテーブルに同じ名前の 2 つのフィールドを持たないことuserIDです。外部キーでない限り、フィールド名を再利用しないようにしています。

于 2012-06-12T17:29:21.657 に答える