준비된 문은 당신이 그들에게 익숙해지면 다시 탈출 함수를 사용하는 고통스러운있어 너무 좋다. 기간.
그러나 내가 사용 해본 모든 DB 라이브러리 (oci8 및 sqlsrv ... 포함)는 하나의 버크 또는 다른 버젼을 소개합니다. 그래서 기본적으로 난 길의 기능을 제공하는 사용자 정의 클래스의 간단한 세트를 사용하는 어떤 라이브러리 캡슐화 내가 좋아하는 :
- 이름을 기반으로 매개 변수 : 연관 배열에 값에 의해 전달
WHERE foo = :foo
- 매개 변수를 (오히려) 개별 PHP 변수 결합보다 :
$params = array('foo' => 33)
- 한줄 실행 :
$res = $Db->query($sql, $params);
- 결과 집합은 반복자 인터페이스를 구현하는 오브젝트이므로 I 함께 루프 수
foreach($res as $row)
이러한 정책을 채택하면 정확한 구문 또는 기능 설정이 덜 중요 해집니다.
거의 모든 라이브러리에서 수행 할 수 있지만 네이티브 param 바인딩을 제공하면 도움이됩니다. 예를 들어 데이터 유형을 추측 할 필요가 없습니다.또한 트랜잭션과 같은 일부 고급 기능은 단순한 mysql 함수로 간단히 수행 할 수 없습니다.
PDO는 좋은 대안이었을 수 있지만 드라이버의 대부분은 기본적으로 버려 졌으므로 함정을 즐기는 동안 DB를 불가 지론적인 추상화 계층의 이점을 실제로 잃어 버렸습니다.
IMHO, 당신이 묻는 단순한 사실은 당신이 mysqli에게 기회를 주어야한다고 제안합니다.
감사합니다. mysqli를 살펴보고 클래스를 만들었습니다. (코드를 직접 작성하지 않고 실험에 사용했지만 확실하게 조정할 수 있습니다.) SQL 인젝션은 제가 사용하기를 원하는 유일한 이유입니다. 그러나 나는 잠재적 인 성과에 대해 걱정하고 있습니다. 준비된 명령문을 사용할 때 캐싱에 대한 내용을 원래 방법과 비교할 때 읽지 않은 것들을 읽었습니다. – Rob