가변 개수의 매개변수를 사용하여 동적 SQL 문을 준비하려면 PHP의 바인딩_param 메서드가 문제가 되는 경우가 많습니다. 이 문서에서는 PHP에서 동적으로 바인딩_param 문을 생성하는 프로세스를 안내하고 기존 솔루션과 잠재적인 개선 사항을 모두 살펴봅니다.
제공된 코드 조각은 다음을 수행하는 bind_param 메서드를 사용합니다. 유형 지정자 뒤에 매개변수로 단일 변수가 옵니다. 여러 매개변수에 대한 지원 부족을 극복하기 위해 call_user_func_array를 사용하여 사용자 정의 솔루션을 시도했습니다. 그러나 PHP 버전 호환성 문제가 발생합니다.
PHP 5.6에는 동적 바인딩을 단순화하는 데 활용할 수 있는 압축 해제 연산자(...)가 도입되었습니다. 다음과 같은 향상된 코드를 고려하십시오.
public function get_custom_result($sql, $types = null, $params = null) { $stmt = $this->mysqli->prepare($sql); $stmt->bind_param($types, ...$params); if (!$stmt->execute()) return false; return $stmt->get_result(); }
압축 해제 연산자를 활용하여 코드는 $params 배열을 개별 매개변수로 동적으로 압축 해제하여 여러 개의 바인딩_param 호출 필요성을 효과적으로 대체합니다.
향상된 방법은 다음과 같이 사용할 수 있습니다.
$res = $output->get_custom_result($sql, 'ss', array('1', 'Tk')); while ($row = $res->fetch_assoc()) { echo $row['fieldName'] . '<br>'; }
이 예 두 개의 매개변수 '1'과 'Tk'를 사용하여 SQL 문을 준비하고 쿼리를 실행합니다. 그런 다음 결과를 가져와 표시합니다.
향상된 바인딩 접근 방식이 잘 작동하지만 고려해야 할 대체 전략이 있습니다.
위 내용은 PHP에서 MySQLi에 대한 `bind_param` 문을 동적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!