문제

내 사용자 정의 자원 모델은,나를 사용하려고 해요 fetchAssoc 일부 테이블에서 데이터.하려고 해요 견적 배열로에서 성명,그리고 나는 것으로 나타났는지(빈 배열을 반환합니다)때 사용하는 이름이 있습니다.그러나 사용하여 두번째 아규먼트 $select->where() 을 인용하는 값에서 작동합니다.

나는 단지 호기심이 왜 이 작동하지 않...

$bind = array( 
    'expert_id' => $expert_id,
    'product_id' => $adapter->quote($product_id),
);

//Debug:  Array ( [expert_id] => 1, [product_id] => '3032', '3091', '3132' )

$select = $adapter->select()
    ->from($this->getTable('namespace_module/table'), '*')
    ->where('product_id IN(:product_id)')
    ->where('expert_id = :expert_id');

// Debug: SELECT `namespace_module_table`.* FROM `namespace_module_table` WHERE (product_id IN('3032', '3091', '3132')) AND (expert_id = :expert_id)

그러나 이것은?

$bind = array( 
    'expert_id' => $expert_id,
);

//Debug: Array(  [expert_id] => 1 )

$select = $adapter->select()
    ->from($this->getTable('namespace_module/table'), '*')
    ->where('product_id IN(?)', $product_id)
    ->where('expert_id = :expert_id');

// Debug: SELECT `namespace_module_table`.* FROM `namespace_module_table` WHERE (product_id IN(:product_id)) AND (expert_id = :expert_id)

그것은 일반 규칙을 사용할 수 없습니다 바인딩 params 에서는 문장인가요?내가 본 , 지만,나는 생각 젠토의 $adapter->quote 방법했는데 돌봐의 돌 배열로 목록입니다.

도움이 되었습니까?

해결책

Magento,그리고 가장 현대 PHP 데이터베이스에 추상화,궁극적으로 의존 PDO 라이브러리의 매개 변수는 구현에 대한 바인딩 매개 변수를 지원합니다. PDO 지원하지 않는 바인딩을 배열을 매개 변수 대--이유?의하는 방법으로 사용했었는데,라이브러리와 이름.

이러한 문제를 해결하기 위해,많은 PHP 데이터베이스에 추상화 제공 IN 에 대한 지원,자신 하여 약속 안함 매개 변수입니다.에서 두 번째 코드를 들어 젠토의 기본 SQL 추출 라이브러리가 생성 IN 문과 함께 당신을 위해 하드 코딩된 값 배열에서,그리고 보내는 데이터베이스에 있습니다.이것은 다른 사용하여 지속 매개 변수와속 매개 변수의 번 보내는 SQL 문으로는 바인딩 매개 변수 데이터베이스에 대한 데이터베이스는 변수에 적용되는 매개 변수입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top