2011-03-02 3 views
1

PHP PDO를 사용하여 여러 SQL 쿼리를 실행하는 가장 좋은 방법은 무엇입니까?PHP PDO를 사용하여 여러 SQL 쿼리를 실행하는 모범 사례

나는 4 개의 테이블을 가지고 있으며 각각은 MyISAM에서 실행 중이다. 따라서 외래 키를 지원하지 않습니다. 하나의 주 테이블이 있고 다른 테이블에는 주 테이블에 대한 참조가 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); 

위의 코드는 다소 반복적이며 중복되어 있다고 생각합니다. 어떻게 개선 할 수있는 제안이나 조언이 있습니까?

+0

가능한 중복 (HTTP [여러 MySQL의 쿼리를 하나의 PHP는 2 차원 배열로] : // 유래. com/questions/1172272/multiple-mysql-queries-one-php-2-dimensional-array) – outis

답변

2
사용 joins

하고, 사용하지 않는 SELECT * (당신이 필요로하는 컬럼 만 선택)의

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