IN 연산자가 포함된 MySQLi 준비된 문
준비된 문은 매개변수 값을 별도로 지정할 수 있도록 하여 기존 쿼리에 비해 향상된 보안 및 성능을 제공합니다. 진술 그 자체. 그러나 IN 연산자와 함께 준비된 문을 사용하는 경우 접근 방식이 올바르지 않으면 문제가 발생할 수 있습니다.
문제
초기에서 언급했듯이 쿼리에서, 바인딩_param('s', $in_statement)을 사용하여 쉼표로 구분된 값 문자열을 준비된 문에 바인딩하면 데이터가 쿼리에 존재하더라도 결과가 나오지 않습니다. 데이터베이스.
해결책
해결책은 각 매개변수 값을 개별적으로 처리하는 데 있습니다.
예제 코드
<?php $lastnames = ['braun', 'piorkowski', 'mason', 'nash']; $arParams = []; foreach ($lastnames as $key => $value) { $arParams[] = &$lastnames[$key]; } $count_params = count($arParams); $int = str_repeat('i', $count_params); array_unshift($arParams, $int); $q = array_fill(0, $count_params, '?'); $params = implode(',', $q); $data_res = $mysqli->prepare("SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN ({$params})"); call_user_func_array([$data_res, 'bind_param'], $arParams); $data_res->execute(); $result = $data_res->get_result(); while ($data = $result->fetch_array(MYSQLI_ASSOC)) { // Your code here... } $result->free(); $data_res->close();
이 접근 방식을 사용하면 IN 연산자를 사용하여 준비된 문에 여러 값을 올바르게 바인딩할 수 있습니다.
위 내용은 IN 연산자와 함께 MySQLi 준비된 문을 효과적으로 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!