현재 위치: > 최신 기사 목록> mysqli :: stmt_init를 사용하여 효율적인 키워드 퍼지 검색 (예 : 쿼리)을 구현하는 방법

mysqli :: stmt_init를 사용하여 효율적인 키워드 퍼지 검색 (예 : 쿼리)을 구현하는 방법

M66 2025-06-23

데이터베이스 쿼리는 PHP 응용 프로그램을 개발할 때 가장 일반적인 작업 중 하나입니다. 특히 큰 데이터 볼륨을 다룰 때 쿼리 효율성을 향상시키는 방법이 우리의 초점입니다. PHP에서는 MySQLI 확장을 사용하여 데이터베이스 쿼리를 실행하는 것이 매우 일반적이며 MySQli :: STMT_Init은 전처리 진술을 실행하여 쿼리 효율성 및 보안을 개선하는 데 도움이되는 훌륭한 도구입니다.

이 기사는 MySQLI :: STMT_INIT를 통해 효율적인 키워드 퍼지 검색을 달성하는 방법, 특히 SQL에서 유사한 키워드를 사용하여 쿼리하는 방법을 소개합니다.

1. 전처리 진술 및 mysqli :: stmt_init

PHP에서 MySQLI는 MySQLI :: STMT_INIT 메소드를 제공하여 전처리 문을 초기화합니다. 이는 SQL 쿼리가 사전 컴파일 된 다음 바인딩 파라미터에 의해 실행되고 SQL 주입의 위험을 피할 수 있음을 의미합니다. 전처리 명세서는 보안을 제공 할뿐만 아니라 동일한 쿼리를 실행할 때 더 나은 성능을 제공합니다.

문법

 $stmt = $mysqli->stmt_init();

2. 퍼지 쿼리에 왜 사용 되는지

마찬가지로 키워드는 종종 SQL에서 퍼지 쿼리를 구현하는 데 사용됩니다. 일반적으로 특정 패턴과 일치하는 문자열을 찾는 데 사용됩니다. 퍼지 쿼리에서 %는 모든 문자 (제로 문자 포함)를 나타내고 _ 는 단일 문자를 나타냅니다.

예를 들어:

 SELECT * FROM users WHERE username LIKE '%admin%';

이 쿼리는 관리자가 포함 된 모든 레코드를 사용자 이름 으로 반환합니다.

3. mysqli :: stmt_init를 사용하고 효율적인 퍼지 검색을 구현하는 것을 좋아합니다 .

다음으로 MySQLI :: STMT_INIT를 사용하여 효율적인 키워드 퍼지 검색을 구현하는 방법을 보여 드리겠습니다. 데이터베이스에서 사용자를 찾아야한다고 가정하고 검색 기준에는 사용자 이름에 특정 키워드가 포함되어 있다고 가정합니다.

1 단계 : 데이터베이스 연결 초기화

먼저 데이터베이스에 연결해야합니다.

 $mysqli = new mysqli("localhost", "username", "password", "database");

// 연결을 확인하십시오
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

2 단계 : 전처리 문을 초기화합니다

우리는 mysqli :: stmt_init를 사용하여 전처리 명령문 개체를 초기화합니다.

 $stmt = $mysqli->stmt_init();

3 단계 : 퍼지 쿼리 문을 만듭니다

다음으로 퍼지 쿼리와 같이 사용하십시오. 우리는 사용합니까 ? SQL 주입 문제를 피하기위한 매개 변수 대신 :

 $sql = "SELECT * FROM users WHERE username LIKE ?";

4 단계 : 매개 변수 바인딩

사용자가 입력 한 검색 키워드 SQL 문서에서 Fuzzy Match를 표시하기 위해 Like Query에 %를 추가합니다.

 $searchKeyword = "%$keyword%";  // 사용자가 입력 한 키워드,전후에 백분율 부호를 추가하십시오
$stmt->prepare($sql);
$stmt->bind_param("s", $searchKeyword);  // "s" 문자열 유형을 바인딩하는 매개 변수

5 단계 : 쿼리 실행

쿼리를 실행하고 결과를 얻으십시오.

 $stmt->execute();
$result = $stmt->get_result();

6 단계 : 결과를 처리하십시오

예를 들어 get_result () 를 통해 쿼리 결과를 가져 와서 처리하여 결과를 브라우저에 출력하십시오.

 while ($row = $result->fetch_assoc()) {
    echo "User ID: " . $row['id'] . " - Username: " . $row['username'] . "<br>";
}

7 단계 : 연결을 닫습니다

쿼리가 완료되면 데이터베이스 연결을 닫는 것을 잊지 마십시오.

 $stmt->close();
$mysqli->close();

4. 요약

mysqli :: stmt_init 및 preprocessing 문을 사용하면 SQL 주입을 효과적으로 방지하고 쿼리 성능을 향상시킬 수 있습니다. 특히 퍼지 쿼리에 Like For Like를 사용할 때 전처리 명세서를 사용하면 쿼리를 사용자가 입력 한 데이터와 분리하여 보안 및 효율성을 높일 수 있습니다.

또한 일부 시나리오에서는 쿼리 와 마찬가지로 매우 유용하지만 퍼지 쿼리는 많은 양의 데이터를 처리 할 때 성능 문제를 일으킬 수 있습니다. 데이터베이스 인덱싱 또는 기타 최적화 측정을 통해 쿼리 효율성을 더욱 향상시키는 것을 고려할 수 있습니다.