我有以下错误:
Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 syntax error, unexpected '-'
这是一段代码:
$stmt = $db->prepare(
"
SELECT
product_id,
name
FROM
products
WHERE
MATCH(name) AGAINST(:name IN BOOLEAN MODE)
"
);
$stmt->bindParam(':name',$name,PDO::PARAM_STR);
$stmt->execute();
如果名称中有破折号(-),则会出现问题。当名称为“normal”(不带破折号)时,它起作用。
我尝试了这个问题的解决方案(php/mysql中的pdo和utf-8特殊字符?)。
有人有主意吗?
提前谢谢!
编辑
@lonesomeday答案有效,但我找到了另一个解决方案。通过将“in boolean mode”更改为“in natural language mode”,错误消失了。
1条答案
按热度按时间j8ag8udp1#
问题在于
IN BOOLEAN MODE
全文搜索。人物-
在搜索中,字符串(以及其他几个字符串)具有特殊含义(不包括搜索中的单词)。我认为你的错误是因为-
前面有单词的字符,中间没有空格。不管怎样
-
在任何情况下都不会像其他操作符一样成为搜索的一部分,因此最简单的方法是将它与其他操作符一起剥离出来。只有当你真的希望这些字符在这个上下文中有特定的含义时,才包括这些字符。