これは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構文でエラーが発生しています。 MariaDBサーバーのバージョンに対応するマニュアルをチェックし、適切な構文を使用して、 '' LIKE \ '%REMAX GRAY%\'またはat_name.value LIKE \ '%REMAX%\'またはat_name.value LIKE \ '
これは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%\'')
あると\
は、それが正常に実行されます。ように
私はzendフレームワークが 'とバックスラッシュを行うものであるため、取り除くことはできません。私はこれにどのように対処しますか?
ありがとうございました。
私はzend-frameworkに精通していませんが、バインディングの仕方ではありません。各値にはプレースホルダが必要です。 '? 'は1の値であり、引用符で囲まれています。これにより、SQL文が文字列になります。 'at_name.value =?'を実行した場合、エラーは発生しませんが、結果は得られません。 – chris85