바운드 매개변수를 여러 번 사용
데이터베이스 프로그래밍에서 바인딩된 매개변수를 사용하는 것은 SQL 주입 공격을 방지하는 데 중요합니다. 그러나 개발자는 준비된 명령문 내에서 동일한 매개변수를 여러 번 사용하려고 할 때 종종 문제에 직면합니다.
원래 문제 설명
원본 게시물에서는 사용자는 UNION SELECT를 활용하여 각각 다른 검색 기준을 사용하는 여러 테이블에서 데이터를 가져오는 검색 엔진을 구현하려고 합니다. 쿼리에는 준비된 문에 바인딩되는 ":term" 매개 변수의 여러 인스턴스가 포함되어 있습니다.
해결책: 사용자 정의 변수
제공된 솔루션은 다음을 제공합니다. 바인딩된 매개변수를 여러 번 사용하는 대체 접근 방식입니다. 개발자는 MySQL 사용자 정의 변수를 활용하여 코드를 단순화하고 가독성을 높일 수 있습니다.
예제 코드
$sql = "SET @term = :term"; $stmt = $dbh->prepare($sql); $stmt->bindValue(":term", "%$term%", PDO::PARAM_STR); $stmt->execute(); $sql = "SELECT ... FROM table WHERE name LIKE @term OR number LIKE @term"; $stmt = $dbh->prepare($sql); $stmt->execute(); $stmt->fetchAll();
장점
단점
위 내용은 준비된 문에서 바인딩된 매개 변수를 여러 번 재사용하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!