我有一个 PHP/mySQL 搜索脚本,由于某种原因,在开发人员进行最新更新后,在使用通配符 (*) 进行搜索时它已停止工作。更糟糕的是,它不仅停止工作,而且返回以下令人讨厌的(对于访问者)mySQL 错误,该错误基于甜甜圈通配符搜索:
SELECT a.product_id, a.category_id FROM products a
LEFT JOIN users u ON u.userid=a.ownerid
WHERE a.active=1 AND a.approved=1 AND a.deleted=0 AND a.creation_in_progress=0
AND a.name LIKE '%%'
AND ((a.name REGEXP '( )*(*donut*)( )*') OR (a.description REGEXP '( )*(*donut*)( )*'))
错误:
Mysql Error: Got error 'repetition-operator operand invalid' from regexp
不幸的是,开发人员不能(或不会)修复它,如果有人进行通配符搜索,它会使我的网站变得无用。
任何想法可能是什么问题?还是一个简单的修复?我已经尝试在 $keywords_search 之前加一个反斜杠,但这没有用。我还尝试直接在 PhpMyAdmin 中运行上面的 mySQL 查询,它产生了同样的错误。
我还尝试完全摆脱 REGEXP 部分,但它根本不会返回任何结果。
这部分的PHP搜索代码如下:
$query[] = "((a.name REGEXP '( )*(" . str_replace(' ', ')*( )*(', $keywords_search) . ")( )*')
OR (a.description REGEXP '( )*(" . str_replace(' ', ')*( )*(', $keywords_search) . ")( )*'))";