나는 PHP에 초보자이다. mysql 테이블에 값을 삽입하는 PHP 파일이 있습니다. 따라서 이것이 자주 발생하는 효율성을 감안할 때 PHP 파일에서 mysqli_prepare 문을 사용하기로 결정했습니다.mysqli가 PHP에서 매번 prepared statement를 피하는 방법
이 PHP 파일이 실행될 때마다 궁금해하며, 불필요한 부담이 될 수있는 진술을 준비하게됩니다. 진술서를 한 번만 작성하여이를 피할 수있는 방법이 있습니까? 아니면 준비된 진술의 개념을 놓치고 있습니까?
$query = 'INSERT INTO tbl (param, new_param) VALUES (:param, :new_param)';
$stmt = DB::prepare($query);
foreach($data as $param => $new_param)
{
$stmt->execute(':param' => $param, ':new_param' => $new_param);
}
을 OR이
DB::query("INSERT "); // PDOChild::getInstance()->query("INSERT ");
처럼 당신은 데이터를 삽입하는 경우 :
감사합니다, Marutha
준비된 문장을 만드는 간단한 작업은 부담이되지 않습니다. 이걸 어디서 배웠 니? – Charles
나는 초보자입니다. 준비된 진술에 대한 위키 백과 문서를 읽으십시오. 나는 준비된 구문이 DBMS에 의해 최적화 된 컴파일 된 쿼리를 구문 분석하고 나중에 실행을 위해 캐시에 보관되어야한다고 읽었습니다. 그래서 나는 성명서를 준비 할 때 DBMS에 의해 파싱되어 매 시간마다 준비하는 것이 비용이 많이들 것이라고 생각했습니다. 이것이 어떻게 다루어 지는지 몇 가지 정보를 던질 수 있다면 고맙겠습니다. – Marutha
MySQL의 경우 준비된 명령문은 명령문 핸들이 열려있는 동안에 만 지속됩니다. 아마도 저장 프로 시저를 생각하고 있습니까? SQL 구문 분석과 쿼리 계획 생성이 비교 대상이 될 수 있으므로 저장된 프로 시저에서 대부분의 작업을 수행하는 것이 가장 좋습니다. 그 이후로 10 년이 넘었습니다. 당신이 알기 전까지, 측정 가능한 * 사실에 대해서, 당신의 쿼리 작성 방법은 성능에 부담이되며, 아무런 댓가를 치르지 마십시오. 멋진 값 자리 표시 자에 대해 준비된 문을 사용하고 데이터의 색인이 생성되었는지 확인하십시오. – Charles