PHP 5.5, MySQL 5.6Как использовать подстановочные символы в MySQL хранимые процедуры
Попытка создать хранимую процедуру, которая реализует использование Wildcards для поиска поле, которое имеет параметры, которые разделены. |
Попытка преобразовать следующий вложенный запрос в хранимую процедуру:
$keywords = "Jack";
$sql='select * FROM dealers where searchPhrases LIKE "%|'.$keywords.'|%"';
$res=mysql_query($sql);
Здесь хранится процедура Вариант 1, они вызываются с помощью PHP PDO, пытаясь обновить проект, удалив использование mysql_query из проект.
DROP PROCEDURE IF EXISTS `getDealerInfo`//
CREATE PROCEDURE `getDealerInfo`(
IN _search VARCHAR(100)
)
BEGIN
SET @query = CONCAT(
'select *
FROM dealers
where searchPhrases LIKE "%|'
,_search
,'|%"');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END//
Вот процедура 2:
DROP PROCEDURE IF EXISTS `getDealerInfo2`//
CREATE PROCEDURE `getDealerInfo2`(
IN _search VARCHAR(100)
)
BEGIN
select *
FROM dealers
where searchPhrases LIKE _search;
END//
Я тестирование как с помощью MySQL консоли и для каждого случая я получаю 0 результатов.
Call getDealerInfo("Jack");
Call getDealerInfo2("%|Jack|%");
Оба этих запросов в MySQL консоли возврата 0 записей, но если я использую PHP выше я получаю обратно по крайней мере 1 запись для запроса. Как я могу исправить мою хранимую процедуру, чтобы работать с символом подстановки?
Решение - хранимая процедура 1 верна. Спасибо, @ Равиндер. Простая ошибка в суждении. Я изменил запись в неправильной базе данных.
2 один неверно, но 1-й должен работать. Опубликуйте некоторые записи в таблице. –
@Ravinder - вот копия результатов поискаPhrases Я ищу: '| Jack | Harris | Jack Harris |' – mcv
У вашего нынешнего подхода много скрытых осложнений - и зачем идти на большие проблемы, когда MySQL поставляется с Введена очень эффективная грамматика поиска текста? http://dev.mysql.com/doc/refman/5.6/en/fulltext-natural-language.html – symcbean