2014-08-31 2 views
4

필자는 PDO를 처음 접했을 때 원하는 장소에서/원하는 방식으로 원하는 사용법을 찾고 있는지 완전히 확신하지 못했습니다.PDO의 배열을 사용하여 어떻게 삽입/업데이트 할 수 있습니까?

PDO는 아주 좋은 것 같습니다하지만 난 오히려 긴 코드의이 종류를 찾아 내가 실행할 때마다 쿼리를 사용하지 않으 :

$sth = $database->prepare('SELECT name, colour, calories 
    FROM fruit 
    WHERE calories < :calories AND colour = :colour'); 
$sth->execute(array(':calories' => $calories, ':colour' => $colour)); 

내가 오히려이 같은 것을 사용

$array = 
'calories' => $calories, 
'colour' => $colour 
); 
$db->insert("fruit", $array); 

(마찬가지로 업데이트 호출을하고 싶습니다. 키 이름이 테이블의 필드로 사용되고 삽입/업데이트 할 값으로 각 삽입/업데이트에 대해이 기능을 사용하고 싶습니다.).

은 내가 가치 것은 :

  • 은 내 자신의 스크립트에서 최소한의 코드를 갖는 유일한 배열을 사용하여 다른 곳 (오류 캡처 포함) PDO 문을 처리.
  • PDO와 함께 제공되는 준비된 명령문 및 객체 지향 프로그래밍을 여전히 활용합니다.

나는 많은 답변을 발견하지만 그들은을 포함하여 여러 가지 다양한 유형의 솔루션을 제안한다 :

모든 모두에는 많은 옵션이있는 것 같지만 가장 권장되는 방법이 제 목적을위한 것이거나 심지어 구체적인 차이점이 무엇인지에 대한 좋은 아이디어가 없습니다.

나를 밝히십시오 : 여기를 어디에서 찾고 있어야합니까?!

+7

PDO는 원시 SQL 드라이버 인터페이스의 간단한 사용 데모에 대한보고가있다. 균일하게 제공하는 유일한 편의는 바인딩 된 매개 변수입니다.그래서 예, 헬퍼 함수 또는 추상화가 갈 길입니다. 아무도 순수 자바 스크립트를 사용하지 않는 것처럼 지루한 PDO 주문을 작성하면 안됩니다. 그러나 아무도 크기가 맞지 않습니다. ORM과 쿼리 빌더는 종종 SQL 트레이닝 휠로 그려지는 반면 Active Record 또는 CRUD 래퍼는'-> insert' 유스 케이스를 단순화합니다. DB 구조의 커스텀 유틸리티 함수 (적어도 배열 바인딩 또는보다 간단한 파라미터 바인딩)에 따라 생산성이 높아질 수 있습니다. – mario

+0

@mario 고마워, 그게 내가 찾고 있던 대답이야. 이 질문에 대답 해 주시겠습니까? 당신이 각각의 몇 가지 예를 던지거나 다른 옵션을 선택하는 방법에 대한 권장 사항을 던져서 더 유용하게 만들 수 있다면! –

+0

"ORM과 쿼리 빌더는 종종 SQL 교육용 바퀴로 그려져 있습니다."그건 정말 끔찍한 방법입니다. 그들은 결코 "훈련 바퀴"에 있지 않습니다. ORM을 사용하여 올바른 쿼리를 내 보내면 신뢰할 수있는 경우 ORM을 사용하고 그렇지 않은 경우 ORM을 무시하거나 사용자 지정합니다. 좋은 ORM이 손으로하는 것보다 코드와 오류의 위험이 훨씬 적은 95 %의 시간에 올바른 작업을 수행합니다. – tadman

답변

0

일상적인 쿼리를 제거하고 더 높은 수준의 코드로 대체하기위한 여러 시스템이 있습니다.

하나는 Propel 또는 Doctrine과 같은 ORM을 사용하는 것입니다.

데이터베이스 쿼리 이외에도 많은 도움을 줄 과 같은 전체 development framework을 사용하는 것이 더 좋습니다. 대부분의 응용 프로그램은 HTML 이스케이프, XSS 보호, URL 매핑, 인증, 세션 관리 등을 고려해야합니다. 이 모든 것을 스스로 쓰는 것은 어렵고 오류가 발생하기 쉽습니다.

0

다른 답변에서 언급 한 것처럼 그 일을하는 부드러운 방법은 당신의 경우에 orm을 사용하는 것입니다.

예를 들어 doctrine. 그것은 매우 복잡하고 강력합니다. 경량이면서도 기능적인 오르막을 사용하고 싶다면 옵션이 있습니다. 예를 들어 db.php를 들어

:도 (HTTP \ dbphp.net) 및 그 프레임 워크 https://github.com/hazardland/db.php/blob/master/samples/001.showcase.php

관련 문제