Php SQL JOIN返回3个名为“id”的字段

Php SQL JOIN返回3个名为“id”的字段,php,mysql,sql,join,Php,Mysql,Sql,Join,我有一个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

我有一个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;"
现在,学校、教授和学校教授都有id列。但是,我如何访问教授的id?这是我唯一关心的问题。

在本例中,您不应该使用*而是手动投影列名并在其上添加别名。例如

SELECT   ....,
         p.ID AS ProfessorID,
         s.ID AS SchoolID,
FROM     .....
作为旁注,如果变量的值来自外部,则查询易受攻击。请看下面的文章,了解如何预防它。通过使用PreparedStatements,可以避免在值周围使用单引号


它是用PDO包起来的,这样可以防止注射,我想要*的原因是我基本上想要第二和第三个表的id,大约50列。如果您仍然想使用*,那么为教授和学校ID示例添加额外的列:选择*,p.ID作为教授ID,s.ID作为学校ID来自。。。