Magento의 내 쿼리입니다.Zend Framework Magento Where 문이 오류를 반환합니다.
$where = "LIKE '%".$value."%'";
foreach($tokens as $token) {
$where .= " OR at_name.value LIKE '%$token%'";
}
$this->getCollection()->getSelect()
->joinInner(array('at_name' => 'mgmx_catalog_product_entity_text'), '(at_name.entity_id = at_visibility.entity_id)')
->where("at_name.value ?" ,$where);
나는이 쿼리를 실행하면 오류가 반환됩니다
# 1064 - 당신은 당신의 SQL 구문에 오류가 있습니다; 'LIKE \'% REMAX GRAY % \ '또는 at_name.value LIKE \'% REMAX % \ '또는 at_name.value LIKE \'4 번 줄 근처에서 사용할 올바른 구문을 보려면 MariaDB 서버 버전에 해당하는 설명서를 확인하십시오.
이것은 MySQL의 쿼리입니다. 나는 ''
을 제거하면
SELECT COUNT(DISTINCT e.entity_id)
FROM `mgmx_catalog_product_entity` AS `e`
INNER JOIN `mgmx_catalog_product_entity_int` AS `at_status`
ON (`at_status`.`entity_id` = `e`.`entity_id`) AND
(`at_status`.`attribute_id` = '96') AND (`at_status`.`store_id` = 0)
INNER JOIN `mgmx_catalog_product_entity_int` AS `at_visibility`
ON (`at_visibility`.`entity_id` = `e`.`entity_id`) AND
(`at_visibility`.`attribute_id` = '102') AND (`at_visibility`.`store_id` = 0)
INNER JOIN `mgmx_catalog_product_entity_text` AS `at_name` ON (at_name.entity_id = at_visibility.entity_id) WHERE (at_name.value 'LIKE
\'%REMAX GREY%\' OR at_name.value LIKE \'%REMAX%\' OR at_name.value LIKE
\'%GREY%\'')
오류는 여기 어딘가에
(at_name.value 'LIKE
\'%REMAX GREY%\' OR at_name.value LIKE \'%REMAX%\' OR at_name.value LIKE
\'%GREY%\'')
하고 \
는 정상적으로 실행됩니다. Like
젠드 프레임 워크는 백 슬래시와 '백 슬래시'를 수행하므로 제거 할 수 없습니다. 이걸 내가 어떻게 처리 할까?
감사합니다.
저는 zend-framework에 익숙하지 않지만 바인딩을 수행하는 방법이 아닙니다. 각 값에 대해 자리 표시자가 필요합니다. '? '는 1 값이고 인용된다. 이렇게하면 SQL 문이 문자열이됩니다. 'at_name.value =?'를했다면 오류가 발생하지 않을 것이지만 reults를 얻지는 못할 것입니다. – chris85