>  기사  >  백엔드 개발  >  준비된 문에서 바인딩된 매개 변수를 여러 번 재사용하려면 어떻게 해야 합니까?

준비된 문에서 바인딩된 매개 변수를 여러 번 재사용하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-26 05:50:10916검색

How Can I Reuse Bound Parameters Multiple Times in a Prepared Statement?

바운드 매개변수를 여러 번 사용

데이터베이스 프로그래밍에서 바인딩된 매개변수를 사용하는 것은 SQL 주입 공격을 방지하는 데 중요합니다. 그러나 개발자는 준비된 명령문 내에서 동일한 매개변수를 여러 번 사용하려고 할 때 종종 문제에 직면합니다.

원래 문제 설명

원본 게시물에서는 사용자는 UNION SELECT를 활용하여 각각 다른 검색 기준을 사용하는 여러 테이블에서 데이터를 가져오는 검색 엔진을 구현하려고 합니다. 쿼리에는 준비된 문에 바인딩되는 ":term" 매개 변수의 여러 인스턴스가 포함되어 있습니다.

해결책: 사용자 정의 변수

제공된 솔루션은 다음을 제공합니다. 바인딩된 매개변수를 여러 번 사용하는 대체 접근 방식입니다. 개발자는 MySQL 사용자 정의 변수를 활용하여 코드를 단순화하고 가독성을 높일 수 있습니다.

  1. 변수 초기화: MySQL 사용자 정의 변수를 생성하고 원하는 값을 할당합니다.
  2. 변수 활용: 쿼리 내에서 사용자 정의 변수를 참조하세요. 그렇지 않으면 ":term"을 여러 번 사용했을 것입니다.

예제 코드

$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 기능 필요성 감소
  • 매개변수 이름 충돌 걱정 없음

단점

  • 추가 MySQL 쿼리가 필요합니다

위 내용은 준비된 문에서 바인딩된 매개 변수를 여러 번 재사용하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.