2011-10-04 84 views
1

我对MySQL连接非常陌生,我把它放在一起,它工作,但我不知道是否有更好的方法来做到这一点?这个连接是否正确?

$q = $dbc -> prepare("SELECT l.layout, a.email 
         FROM layout AS l 
         JOIN accounts AS a ON (l.id = a.id) 
         WHERE email = ?"); 
$q -> execute(array($_POST['email'])); 

基本上有所谓的布局2个表之一,一个叫帐户,我想从布局选择布局,其中,在帐户ID匹配的电子邮件?

回答

1

似乎没有更好的方法。你很好。唯一的建议是不要将AS关键字用于表别名。该位置的AS在MySQL中有效,但不常用。它在每个关系型数据库中都可能不是有效的,所以最好不要养成使用习惯。

SELECT l.layout, a.email 
FROM layout l JOIN accounts a ON (l.id = a.id) 
--  ^   ^
-- alias follows table name directly 
WHERE email = ? 
+0

Ok为什么?我只用它,因为它更容易阅读代码。 – pv1

+0

@ pv1看到我的补充。它是有效的MySQL,但不在每个RDBMS中。 –

+3

有趣:我建议把AS放入,因为在DBMS中我主要使用(Informix),它可以保护您免受未来的关键字添加。由于SQL标准说AS是允许的,所以我希望大多数DBMS都允许它。 (Informix在没有AS的情况下工作得很开心,前提是所使用的别名不是关键字;如果它在将来的版本中成为关键字,那么过去工作的查询容易中断 - 但AS保持它工作。) –