我有两个表"Personne"answers"email"。一个人可以有几封电子邮件,一封电子邮件可以与几个人关联:
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_mail.idEmail
,那么应该有pers_email.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注入。