>  기사  >  백엔드 개발  >  Yii 쿼리의 IN 쿼리는 하나의 메서드만 쿼리할 수 있습니다.

Yii 쿼리의 IN 쿼리는 하나의 메서드만 쿼리할 수 있습니다.

巴扎黑
巴扎黑원래의
2017-08-13 14:32:582714검색

본 글에서는 Yii 프레임워크의 매개변수화된 쿼리에서 하나의 IN 쿼리만 쿼리할 수 있는 문제에 대한 해결 방법을 주로 소개하며, Yii 프레임워크에서 하나의 IN 쿼리만 쿼리할 수 있는 이유를 예제와 관련 함수를 통해 분석합니다. FIND_IN_SET 함수의 사용법과 필수 친구가 참고할 수 있습니다

본 글의 예시는 Yii 프레임워크의 매개변수화된 쿼리에서 하나의 IN 쿼리만 쿼리할 수 있는 문제에 대한 해결 방법을 설명합니다. 참고하실 수 있도록 공유해 드리며, 자세한 내용은 다음과 같습니다.

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 관련 정보를 쿼리하고 그 이유를 알아냈습니다. 자리 표시자가 값 집합을 대체하도록 할 수 없습니다. 이유를 알고 있으면 대체 방법을 찾으십시오. str은 N에 있습니다. 하위 체인으로 구성된 문자열 목록 strlist에서 반환 값의 범위는 1부터 N까지입니다.

문자열 목록은 ',' 기호로 구분된 하위 체인으로 구성된 문자열입니다. 첫 번째 인수가 상수 문자열이고 두 번째 인수가 SET 유형의 열인 경우 FIND_IN_SET() 함수는 비트 계산을 사용하도록 최적화됩니다.

str이 strlist에 없거나 strlist가 빈 문자열인 경우 반환 값은 0입니다. 매개변수가 NULL인 경우 반환 값은 NULL입니다. 첫 번째 인수에 쉼표(',')가 포함되어 있으면 이 함수가 제대로 작동하지 않습니다.


[ps] strlist에서 쉼표로 구성된 문자열은 평소대로 사용할 수 없으며, 쉼표 오른쪽에 공백을 추가하면 인식되지 않습니다.


위 내용은 Yii 쿼리의 IN 쿼리는 하나의 메서드만 쿼리할 수 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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