>백엔드 개발 >PHP 튜토리얼 >Yii 프레임워크 매개변수화된 쿼리의 IN 쿼리가 하나만 쿼리할 수 있는 문제를 해결합니다.

Yii 프레임워크 매개변수화된 쿼리의 IN 쿼리가 하나만 쿼리할 수 있는 문제를 해결합니다.

*文
*文원래의
2018-01-03 13:19:351861검색

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([&#39;:ids&#39; => &#39;1013,1015,1017&#39;])->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([&#39;:ids&#39; => &#39;1013,1015,1017&#39;])->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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.