3

3 つのテーブルとの結合を使用する SQL クエリがあります。実際には正常に動作しますが、3 つのテーブルすべてに「id」というフィールドがあるため、後で id フィールドにアクセスしようとすると、最後のフィールドのフィールドにしかアクセスできません。SQL クエリは次のとおりです。

"SELECT * FROM professors AS p 
            JOIN schools_professors AS sp 
            ON p.school_id = sp.id
            JOIN schools AS s ON sp.school_id = s.id  WHERE p.first_name LIKE '%".
                $search."%' OR p.last_name LIKE '%".$search.
                "%' LIMIT 0, 10;"

これで、schools、professor、schools_professors のすべてに id 列があります。教授のIDにアクセスするにはどうすればよいですか?それは私が気にする唯一のものです。

4

1 に答える 1

5

この場合は使用*しないでください。代わりに、列名を手動で射影し、それに追加ALIASします。例、

SELECT   ....,
         p.ID AS ProfessorID,
         s.ID AS SchoolID,
FROM     .....

補足として、変数のSQL Injection値が外部から取得された場合、クエリは脆弱です。予防方法については、以下の記事をご覧ください。を使用すると、値を一重引用符で囲む必要がなくなります。PreparedStatements

于 2013-04-14T05:50:07.543 に答える