는 :
$select = $db->select()
->from(array("a"=>"AUTHOR"), array("author_name"=>"name"))
->join(array("b"=>"BOOK"), "a.id = b.`author.id`", array("book_name"=>"name"))
->where("a.name = ?", $authorName);
$stmt = $select->query();
그러나, 이것은 보통의주의와 함께 제공 : 모든 쿼리 Zend_Db_Select를 사용 할 필요가 없습니다. Zend_Db_Select는 응용 프로그램 조건에 따라 동적으로 쿼리를 작성해야하는 경우에 가장 적합합니다. 이 경우 Zend_Db_Select를 사용할 이유가 없습니다. Zend_Db_Select은 단지를 얻을 수없는 보안이나 성능면에서 아무것도 제공하지 않습니다 당신의 코멘트를 다시
$sql = "
SELECT a.name AS author_name, b.name AS book_name
FROM AUTHOR AS a JOIN BOOK AS b ON a.id = b.`author.id`
WHERE a.name = ?";
$books = $db->fetchAll($sql, $authorName);
:
그래서 난 그냥 리터럴 SQL을 사용하여 더 분명하게 이런 짓을 했을까 다른 방법으로 쉽게. Zend_Db_Select를 사용하든 SQL에 하나의 리터럴 문자열을 사용하든 결과는 SQL 쿼리로 계속 준비하는 문자열과 같습니다. 데이터베이스는 당신이 그 문자열을 만든 다른 방법에 대해 전혀 모른다.
응용 프로그램에서는 응용 프로그램 논리에 따라 조건부로 SQL 쿼리에 열, 테이블 또는 식을 추가하는 것이 일반적입니다. 이 시나리오에서는 SQL 쿼리에 절을 추가하는 데 도움이되는 Zend_Db_Select와 같은 클래스를 갖는 것이 편리합니다.
이 아니지만에 동적 절이 필요하지 않은 쿼리는 두 번째 예와 같이 하나의 문자열 리터럴로 SQL 쿼리를 표현하기가 쉽고 디버그가 쉬우 며 유지 관리가 쉽습니다. 위.
보안을 위해 작성자 이름에 매개 변수 자리 표시자를 사용하고 쿼리를 준비한 후에 해당 값을 인수로 제공 할 수 있습니다. Zend_Db_Select를 사용하는 것처럼 리터럴 SQL 쿼리를 사용하면 쉽게이 작업을 수행 할 수 있습니다.
고마워요. 나는 원래 질문의 범위를 벗어날 것이라는 것을 알고 있지만 Zend_Db_Select를 사용하는 것이 왜 필요하지 않은지 간단히 설명 할 수는 없습니까? 일반적으로 그렇게하는 데 이점 (성능 또는 보안 현명)이 없습니까? – Max
자신감있는 대답처럼 들립니다. 내가 할게요. 다시 한번 감사드립니다. 내가 말할 수있는 "좋은 닫으십시오". – Max