Я использую Zend Framework 2 для создания следующего экранированного SQL-запроса с одинарными кавычками:
SELECT
`document`.*
FROM
`document`
WHERE
(
`document`.`document_taxon` LIKE '%Men\'s Health %' --escaped quote
AND `document`.`document_source_id` = ' 5 '
AND `document`.`document_published` = ' 1 '
AND `document`.`document_deleted` = ' 0 '
)
ORDER BY
`document_id` DESC
LIMIT 25 OFFSET 0
Но вместо этого я получаю это,
SELECT
`document`.*
FROM
`document`
WHERE
(
`document`.`document_taxon` LIKE '%Men's Health%'
AND `document`.`document_source_id` = ' 5 '
AND `document`.`document_published` = ' 1 '
AND `document`.`document_deleted` = ' 0 '
)
ORDER BY
`document_id` DESC
LIMIT 25 OFFSET 0
А вот мой код
class DocumentTable extends TableGateway
{
....
$select=$this->getSql()->select();
$select->columns(array('*'));
$select->where
->NEST
->like('document_taxon', '%' . $label . '%')
->and
->equalTo('document_source_id', $sourceId)
->and
->equalTo('document_published', true)
->and
->equalTo('document_deleted', 0)
->UNNEST;
$select->order('document_id DESC');
$select->limit($limit);
$select->offset($offset);
...
}
Я старался,
$this->getAdapter()->getPlatform()->quoteValue($string)
\Zend\Db\Sql\Expression("%". $label . "%")
str_replace("'", "\'", $label)
Но мне не повезло. Я приветствую любые предложения по решению этой проблемы.
0
getmizanur
15 Апр 2020 в 16:36
1 ответ
Лучший ответ
Я разобрался. Я передавал нормализованное значение «метки» вместо необработанного значения. Приведенный выше фрагмент кода работает нормально.
0
getmizanur
15 Апр 2020 в 16:12
Похожие вопросы
Новые вопросы
zend-framework2
Zend Framework 2 представляет собой PHP 5.3+ 5.4 (для Zend Framework 2.4+) или 5.5+ (для Zend Framework 2.5.0+) MVC и библиотеку компонентов.