我正在尝试通过检查几个不同的数据库字段来构建一个 MySQL 查询以返回适当的搜索结果。例如,如果用户搜索“plumber leeds”,如果企业在“city”字段中有“leeds”,并且名称中包含“plumber”一词,我希望返回该搜索结果。
用户搜索可能包含多个单词并且是不可预测的。我目前正在通过扩展搜索词、修剪它并使用它来编译复杂的搜索查询以返回所有相关结果来实现我所需要的。
我将这个复杂的查询存储在一个变量中,并使用 Codeigniter 的 Active Record 来运行查询。
$this->db->where($compiled_query, null, false);
我担心的是我没有用反引号保护查询,我不确定这是否是一个安全问题。我启用了 XSS Clean 但仍然不确定这是否可以。
根据 CI 的用户手册: $this->db->where() 接受可选的第三个参数。如果您将其设置为 FALSE,CodeIgniter 将不会尝试使用反引号保护您的字段或表名。
来源:http ://ellislab.com/codeigniter/user-guide/database/active_record.html
关于我如何在一个单独的问题中编译查询的一些信息。我知道 mysql_real_escape_string 即将被弃用并且不是包罗万象的,因此我对此方法的部分担忧。
任何帮助表示赞赏