php - 준비와 SQL의 오버헤드?
我想大声告诉你
我想大声告诉你 2017-06-05 11:07:31
0
1
763

동일한 SQL 쿼리문에 대해 prepare와 query 사용 비용이 동일합니까?
$sql = $pdo -> prepare("테이블에서 * 선택");
$sql -> 실행();
$rs = $sql -> fetch(PDO::FETCH_ASSOC);

$sql = $pdo -> query("select * from table");

$rs = $go -> fetch(PDO::FETCH_ASSOC);
예를 들어 위의 준비 쿼리와 쿼리 쿼리는 동일하게 효율적인가요? (SQL 문 삽입을 무시합니다).

Single 질의 결과에는 어떤 것을 사용하는 것이 더 좋나요? 쿼리할 때 데이터베이스를 두 번 이상 데이터베이스로 보낼 준비를 하시겠습니까?

PDO 준비는 선택에만 적합한가요? 다른 두 작업 업데이트 및 삽입은 어떻습니까? prepare에서 플레이스홀더를 사용하면 주입을 효과적으로 방지할 수 있지만 언제? ="abc./-+#$%`123" 이러한 특수 기호(이스케이프되지 않은 경우)는 명령문을 실행할 때 오류가 보고됩니다. exec가 업데이트 및 삽입에 더 적합합니까?

我想大声告诉你
我想大声告诉你

모든 응답(1)
阿神

1.PDO::query는 SQL 문을 실행하고, 전달되면 PDOStatement 개체를 반환합니다. PDO::query 함수에는 "매우 좋은 점"이 있습니다. 즉, 반환된 레코드 세트를 직접 순회할 수 있다는 것입니다.
2.PDO::exec는 SQL 문을 실행하고 영향을 받은 행 수를 반환합니다. 이 함수는 결과 컬렉션을 반환하지 않습니다. 공식 권장 사항:
프로그램에서 한 번만 실행해야 하는 SELECT 문의 경우 PDO::query() 사용을 고려하세요.
여러 번 실행해야 하는 명령문의 경우 PDO::prepare()를 사용하여 PDOStatement 객체를 준비하고 PDOStatement::execute()를 사용하여 명령문을 실행할 수 있습니다.
PDO::exec는 SELECT/DELETE/UPDATE/INSERT 등 모든 SQL 문 실행을 지원하므로 PDO query() 함수보다 훨씬 강력합니다. 영향을 받는 함수만 반환되기 때문에 SELECT를 실행하면 PDOStatement 개체를 가져올 수 없으므로 공식 권장 사항에 따라 쿼리 또는 실행 함수만 사용할 수 있습니다. .
3.prepare의 원리는 sql문을 sql서버로 미리 보내서 컴파일한 뒤 exec가 실행될 때 실제로 실행되는 것입니다. 한 번 컴파일하면 여러 번 실행됩니다. 쿼리가 하나만 있는 경우 준비와 쿼리의 효율성은 기본적으로 동일합니다. 여러 번 실행하면 준비의 효율성이 드러납니다. 또한 where in (" ")과 같은 SQL 인젝션을 모두 방지할 수 있는 것은 아닙니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿