Yii 프레임워크 매개변수화된 쿼리에서 하나의 IN 쿼리만 쿼리할 수 있는 문제를 해결하는 방법 이 문서에서는 Yii 프레임워크 매개변수화된 쿼리에서 하나의 IN 쿼리만 쿼리할 수 있는 문제에 대한 해결 방법을 주로 소개합니다. Yii 프레임워크에서 IN 쿼리를 분석하려면 FIND_IN_SET 함수의 이유와 관련 기능 및 사용법을 확인하세요. 그것이 모두에게 도움이 되기를 바랍니다.
자세한 내용은 다음과 같습니다.
yii 프레임워크에서 IN 쿼리에 대한 매개변수화를 사용했을 때 예상한 결과가 나오지 않았습니다
$sql =<<<SQL SELECT id FROM tb WHERE id IN(:ids) SQL; $db = GeneralService::getSlaveDB(); $result = $db->createCommand($sql)->query([':ids' => '1013,1015,1017'])->readAll(); print_r($result);
Array ( [0] => Array ( [id] => 1013 ) )
그래서 yii 프레임워크에서 해당 소스코드를 살펴보니 pdo 쿼리가 사용된 것을 발견했고, 그래서 pdo 관련 정보를 문의했습니다. 이유를 알아보세요: 자리 표시자가 값 집합을 대체하도록 할 수 없습니다.
SELECT id FROM tb WHERE userid IN ( ? );
이제 이유를 알았으니 FIND_IN_SET은 간단한 대중 과학의
$sql =<<<SQL SELECT id FROM tb WHERE FIND_IN_SET(id, :ids) SQL; $db = GeneralService::getSlaveDB(); $result = $db->createCommand($sql)->query([':ids' => '1013,1015,1017'])->readAll(); print_r($result);
Array ( [0] => Array ( [id] => 1013 ) [1] => Array ( [id] => 1015 ) [2] => Array ( [id] => 1017 ) )
FIND_IN_SET 함수를 만족시킬 수 있습니다.
FIND_IN_SET(str,strlist)
문자열 str이 N개의 하위 체인으로 구성된 문자열 목록 strlist에 있는 경우, 반환 값은 1에서 N 사이입니다.
문자열 목록은 ',' 기호로 구분된 하위 체인으로 구성된 문자열입니다. 첫 번째 인수가 상수 문자열이고 두 번째 인수가 SET 유형의 열인 경우 FIND_IN_SET() 함수는 비트 계산을 사용하도록 최적화됩니다.
str이 strlist에 없거나 strlist가 빈 문자열인 경우 반환 값은 0입니다. 매개변수가 NULL인 경우 반환 값은 NULL입니다. 첫 번째 인수에 쉼표(',')가 포함되어 있으면 이 함수가 제대로 작동하지 않습니다.
[ps] strlist에서 쉼표로 구성된 문자열은 평소대로 사용할 수 없으며, 쉼표 오른쪽에 공백을 추가하면 인식되지 않습니다.
관련 권장사항:
yii2 Restful API 인증 확인에 대한 자세한 설명
Yii2가 맞춤형 독립 검증기를 구현하는 방법에 대한 자세한 설명
Yii2 통합 Xunsou 구현 효율적인 중국어 단어 분할 검색
위 내용은 Yii 프레임워크 매개변수화된 쿼리의 IN 쿼리가 하나만 쿼리할 수 있는 문제를 해결합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!