多对多加入Php/mysql

多对多加入Php/mysql,php,mysql,many-to-many,Php,Mysql,Many To Many,我有两张桌子“人事”和“电子邮件”。一个人可以有多封电子邮件,一封电子邮件可以与多个人关联: Personne +-------------+--------------+ | idPers | int(10) | | ... | ... | +-------------+--------------+ email +-------------+--------------+ | idEmail | int(10)

我有两张桌子“人事”和“电子邮件”。一个人可以有多封电子邮件,一封电子邮件可以与多个人关联:

    Personne
+-------------+--------------+
| idPers      | int(10)      |
| ...         | ...          |
+-------------+--------------+
    email
+-------------+--------------+
| idEmail     | int(10)      |
| ...         | ...          |
+-------------+--------------+
然后,我在两者之间建立了一座桥梁:

 pers_email
+-------------+--------------+
| id          | int(10)      |
| idPers      | int(10)      |
| idEmail     | int(10)      |
+-------------+--------------+
我想获取与一个人相关的所有电子邮件,我一直在使用以下代码:

$q='SELECT *
from AERA.pers_email , AERA.email
join AERA.email e on e.idEmail = pers_mail.idEmail
where pers_email.idPers = '.$idPers;

$query = $linkpdo->prepare($q);
$query->execute();
$email = $query->fetchAll();
但我无法让它工作,它不断抛出各种模糊的错误,例如:

1054条款“”中的未知栏“pers_mail.idEmail”

谁能告诉我哪里出了问题?
谢谢

您有
pers\u-mail.idEmail
,您应该有
pers\u-mail.idEmail
,并且您应该只进行一次内部连接,您所拥有的将进行交叉连接,然后再次连接,这可能会产生不想要的结果。试试这个

$q='SELECT *
from AERA.pers_email 
inner join AERA.email e on e.idEmail = pers_email.idEmail
where pers_email.idPers = '.$idPers;
此外,仅仅在sql中添加$idPers可能会使您暴露于sql注入