使用PHP PDO执行多个SQL查询的最佳实践

时间:2011-03-02 14:24:06

标签: php mysql pdo

使用PHP PDO执行多个SQL查询的最佳做法是什么?

我有4个表,每个表都在MyISAM上运行。因此,他们没有外键支持。它是一对多的设计,其中有1个主表,另一个表包含以ID形式对主表的引用。

目前,我所做的是运行第一个查询以从主表中获取ID。执行完毕后,我会执行另一个查询,使用第一个查询中的ID查询其他表。然后将两个查询的结果合并在一起(array_merge),然后显示给用户。

到目前为止,这是我的代码。我想你会得到这个要点,你很可能会说我是PHP的超级初学者。 :)

$sql1 = "SELECT * FROM student_records WHERE name=? LIMIT 1";
$stmt1 = $db->prepare($sql1);
$stmt1->execute(array($name));
$e11 = $stmt1->fetch();

$id = $e1['id'];

$sql2 = "SELECT file_name FROM images WHERE id=? LIMIT 1";
$stmt2 = $db->prepare($sql2);
$stmt2->execute(array($id));
$e2 = $stmt2->fetch();

$e = array_merge($e1, $e2);

我认为上面的代码有点重复和多余。关于如何改进这个问题,是否有任何建议和提示?

1 个答案:

答案 0 :(得分:2)

使用joins,不要使用SELECT *(仅选择您需要的列):

SELECT file_name 
  FROM student_records AS sr
    JOIN images AS i ON sr.id = i.id
  WHERE sr.name=?