为什么此存储过程不会返回任何结果
CREATE PROCEDURE `sp_location_selectAllByTermAutoComplete`(
IN _term VARCHAR(99))
BEGIN
SELECT
`title` AS `value`,
`keyword` AS `label`,
`city_id`,
`id` AS `locationtitle_id`
FROM `locationtitle`
WHERE
MATCH(`keyword`) AGAINST(_term IN BOOLEAN MODE)
ORDER BY MATCH(`keyword`) AGAINST(_term IN BOOLEAN MODE) DESC
LIMIT 0, 10
;END//
但是这个回来了
SELECT
`title` AS `value`,
`keyword` AS `label`,
`city_id`,
`id` AS `locationtitle_id`
FROM `locationtitle`
WHERE
MATCH(`keyword`) AGAINST('+NEW*' IN BOOLEAN MODE)
ORDER BY MATCH(`keyword`) AGAINST('+NEW*' IN BOOLEAN MODE) DESC
LIMIT 0, 10
两个输入参数都与其他参数相同。
我有其他存储过程,它们工作正常。
我正在使用PDO
来执行我的存储过程。
我从未在我的存储过程中使用OUT
,也没有使用它的经验。
我在localhost中测试了存储过程并且工作正常,但我不知道为什么它在我的服务器上不起作用?
更新
我发现我的问题是什么。
当我调用以VARCHAR
作为输入参数的过程时,字符串字符将更改为?
(问号)。
我的数据库归类是 UTF-8 ,而且任何表格都是
我添加了pdo utf-8驱动程序,但我不知道它为什么不起作用
即使我不能在phpMyAdmin中调用存储过程
答案 0 :(得分:0)
很难说,但我会尝试检查数据类型,引号等是否符合您的期望:
CREATE PROCEDURE `sp_location_selectAllByTermAutoComplete`(
IN _term VARCHAR(99))
BEGIN
SELECT
_term as my_param,
MATCH(`keyword`) AGAINST(_term IN BOOLEAN MODE) as my_param_result,
`title` AS `value`,
`keyword` AS `label`,
`city_id`,
`id` AS `locationtitle_id`
FROM `locationtitle`
WHERE
MATCH(`keyword`) AGAINST('+NEW*' IN BOOLEAN MODE)
ORDER BY MATCH(`keyword`) AGAINST('+NEW*' IN BOOLEAN MODE) DESC
LIMIT 0, 10
;END//
然后传入
'+ NEW *
'作为参数。
答案 1 :(得分:0)
我想在导入之前设置数据库排序规则utf8或插入任何字符。
现在,我将数据库排序规则设置为utf8,然后再次导入我的数据。问题解决了。