2012-07-11 2 views
1

사람들이 왜 zend_db 스타일을 사용하는지 묻고 싶습니다.왜 SQL 쿼리를 Zend_Db 스타일로 변환합니까?

대신

$result = $d2b->fetchAll('SELECT * FROM users WHERE userid = ?', 2); 
echo $result[0]->username; 

더 나은 하나입니다

 $select = $d2b->select() 
      ->from('users', array('userid','username')) 
      ->where('userid=?', 2); 

$result = $d2b->fetchRow($select); 
echo $result->username; 

? 또는 유지 보수 용이성과 동일합니다.

+0

어느 쪽도 "더 좋다" –

+0

두 가지 모두 장단점이 있습니다. –

답변

6

이유 중 하나는 Zend_db 스타일을 사용하는 SQL의 생성을 추상화이다 : 예컨대, 프로그래밍 방식으로 쿼리를 구축 할 수 있다는 것입니다; 이는 데이터베이스 엔진을 전환하는 것이 호환되지 않는 쿼리를 다시 작성하지 않고 클래스를 스와핑하는 것만 큼 쉽다는 것을 의미합니다.

또한 Zend_db는 SQL 쿼리 이스케이프 처리를 추상화하여 SQL 주입 공격의 위험을 크게 줄입니다. 또한 SQL을 모르는 사람들을위한 데이터베이스 쿼리 기능을 제공합니다.

+0

감사합니다! 미안 해요, 제 영어는 그다지 좋지 않습니다. 당신이 추상적이라고 말하면, 우리는 zend_db 스타일을 채택 할 때 특별히 addslashes와 같은 SQL 삽입을 처리 할 필요가 없다는 것을 의미합니까? zend db 클래스에서 자동으로 수행됩니까? – Slay

+0

추상화는 기본적으로 "다른 것이 당신을 위해 일하는 것"입니다. 대개 간단하고 반복 가능한 작업입니다. 예를 들어,'+'연산자는 더하기 함수의 추상화입니다. 이 함수 자체는 실제로 메모리에있는 많은 비트를 조작하지만, 그것은 여러분을 위해 추상화되었으므로 수행 할 필요가없는 것입니다. –

+0

설명 주셔서 감사합니다! – Slay

5

최종 결과는 동일하므로 사용자의 선호도에 따라 판독 및 유지 관리가 가능합니다.

유창 인터페이스 스타일의 하나의 장점은 쉽게

$select = $d2b->select() 
     ->from('users', array('userid','username')); 

if ([some condition]) { 
    $select->where('userid = ?', 2); 
} else { 
    $select->where('userid = ?', 62); 
} 
+0

+1 플러스 리처드 예 언급 한 (RDBMS 사이의 이식성). – Tadeck

+0

큰 도움을 주셔서 감사합니다 – Slay