Mysql语句,有没有办法改进这个?

时间:2011-09-07 17:48:16

标签: php mysql join

我有两个表帐户和friend_requests,这是我的代码...

$q = $dbc -> prepare("SELECT * FROM friend_requests WHERE id_to = ?");
$q -> execute(array($details['id']));
$account = $q -> fetch(PDO::FETCH_ASSOC);
$result = $q -> rowCount();
if ($result < 1) {
    echo '<p>You haven\'t asked or been asked to be friends with anyone yet.</p><p>This is where you can accept or deny friend requests.</p>';
}
else {
    $q = $dbc -> prepare("SELECT * FROM accounts WHERE id = ?");
    $q -> execute(array($account['id']));
    while ($request = $q -> fetch(PDO::FETCH_ASSOC)) {
        echo '<p>' . $request['username'] . ' has requested to be friends with you.</p>';
    }
}

你会注意到我检查是否有人通过使用rowCount()在第一个sql语句中请求与用户成为朋友,如果有行匹配我从第一个表中提取ID以显示该用户信息从帐户,有一个更好的方法来使用连接使用rowcount吗?

1 个答案:

答案 0 :(得分:3)

$q = $dbc -> prepare ("SELECT a.* 
FROM accounts a
INNER JOIN friend_requests fr ON (a.id = fr.id)
WHERE fr.id_to = ?");
...
if (!$q -> rowCount())
{
  echo 'No requests';
}
else 
while ($request = $q -> fetch(PDO::FETCH_ASSOC)) { /// output}