문제
내 사용자 정의 자원 모델은,나를 사용하려고 해요 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 문으로는 바인딩 매개 변수 데이터베이스에 대한 데이터베이스는 변수에 적용되는 매개 변수입니다.
제휴하지 않습니다 magento.stackexchange