mysqli 준비된 문을 사용한 동적 LIKE 쿼리
이 질문은 다음을 기반으로 다양한 수의 LIKE 조건을 사용하여 준비된 문을 생성하는 문제를 다룹니다. 사용자 입력. 제공된 PHP 코드에서 구문을 구성하려고 시도하지만 LIKE 절의 형식과 관련된 오류가 있습니다.
핵심 문제는 매개변수(?) 주위에 퍼센트 기호(%)가 배치되는 위치에 있습니다. LIKE 절에. 매개 변수를 래핑하는 대신 아래와 같이 자리 표시자 주위에 백분율 기호를 사용해야 합니다.
foreach ( $search_exploded as $search_each ) { $x ++; if ( $x == 1 ) { $construct .= "name LIKE %??%"; } else { $construct .= " or name LIKE %??%"; } }
이러한 수정을 통해 매개 변수 값(예: "내 이름")이 LIKE 절에 올바르게 바인딩됩니다. .
또한 코드는 연결된 문자열($construct)을 사용하여 WHERE 절을 작성합니다. 그러나 보다 효율적이고 안전한 접근 방식은 아래와 같이 모든 매개 변수에 대해 bind_param() 자리 표시자 배열을 사용하는 것입니다.
$where_params = []; foreach ( $search_exploded as $search_each ) { $where_params[] = "%{$search_each}%"; } $query = "SELECT * FROM info WHERE name LIKE ?"; $stmt = mysqli_prepare( $conn, $query ); mysqli_stmt_bind_param( $stmt, "s", ...$where_params );
이 방법은 LIKE 조건 수에 관계없이 원활하게 처리하고 SQL 삽입 위험을 제거합니다.
이러한 수정을 통해 동적 LIKE 쿼리는 여러 사용자 정의 기준에 따라 레코드를 올바르게 검색할 수 있습니다.
위 내용은 mysqli 준비된 문을 사용하여 동적 LIKE 쿼리를 효율적으로 구축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!