MySQLi에서 prepared statement를 사용할 때의 이점은 무엇입니까?왜 MySQLi는 진술을 준비 했습니까?
유일한 목적은 쿼리를 보안하는 것이기 때문에 각 쿼리 (준비, bind_param, 실행, 닫기 등)에 많은 코드 줄을 쓰는 대신 mysqli_real_escape_string
같은 것을 사용하여 쿼리를 정리하는 것이 더 낫지 않습니까? ?
MySQLi에서 prepared statement를 사용할 때의 이점은 무엇입니까?왜 MySQLi는 진술을 준비 했습니까?
유일한 목적은 쿼리를 보안하는 것이기 때문에 각 쿼리 (준비, bind_param, 실행, 닫기 등)에 많은 코드 줄을 쓰는 대신 mysqli_real_escape_string
같은 것을 사용하여 쿼리를 정리하는 것이 더 낫지 않습니까? ?
준비 문장은 코드 보안을위한 것이 아닙니다. SQL Server가 구문을 구문 분석하고 쿼리에 대한 실행 계획을 생성하는 데 도움이됩니다.
SELECT를 1000 번 실행하면 SQL 서버는 데이터를 1000 번 가져 오는 방법을 분석, 준비 및 생성해야합니다.
문을 준비하는 경우 준비된 문을 바인딩 된 값이 서로 다른 1,000 번씩 실행하면 문은 한 번만 구문 분석되고 매번 동일한 쿼리 계획이 사용됩니다.
스크립트 내에서 1,000 개의 쿼리를 실행할 때뿐만 아니라 명령문이 1 개만 있고 스크립트를 1,000 번 실행하는 경우에도 도움이됩니다. 서버는 계획 서버 측을 기억할 수 있습니다. 다음에 스크립트를 실행하면 동일한 계획이 다시 사용됩니다.
물론 하나 또는 두 개의 쿼리에 대해서는 사소한 것처럼 보일 수 있지만 많은 수의 쿼리 또는 동일한 쿼리를 반복해서 실행하면 많은 처리 시간이 절약됩니다.
은 몇 가지 장점이 있습니다
WHERE $x = 4
을 쓰면 $x
이 null 인 경우 구문 오류가 발생하지만 WHERE ? = 4
이 작동합니다.
실행 시간 및 쿼리 캐싱. – zzzzBov