栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PDO和MySQL全文搜索

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PDO和MySQL全文搜索

不幸的是,这是使用查询参数的一个奇怪的例外( 编辑: 但显然不在每个MySQL分支的最新版本中,请参见下文)。

中的模式

AGAINST()
必须
是常量字符串,而不是查询参数。与SQL查询中的其他常量字符串不同,您不能在此处使用查询参数,这仅仅是因为MySQL的限制。

要将搜索模式安全地插入查询中,请使用PDO ::
quote()
函数。请注意,PDO的quote()函数已经添加了引号定界符(与mysql_real_escape_string()不同)。

$quoted_search_text = $this->db->quote('+word +word');$sql = $this->db->prepare("SELECt ... FROM search_table     WHERe MATCH(some_field) AGAINST($quoted_search_text IN BOOLEAN MODE");

来自@YourCommonSense的评论:

没错,我刚刚在MySQL 5.5.31、5.1.68和5.0.96(MySQL
Sandbox是一个很棒的工具)上进行了测试,看来这些版本确实接受aAGAINST()子句中的查询参数动态SQL查询。

我仍然回想起过去存在的冲突。也许已在每个分支机构的最新发行版中对其进行了更正。例如,我发现这些相关的错误:

  • 在AGAINST()子句中使用存储过程参数总是返回相同的结果:http : //bugs.mysql.com/bug.php?id=3734
  • 使用准备好的语句,MATCH和FULLTEXT导致崩溃或奇怪的结果:http ://bugs.mysql.com/bug.php?id= 14496


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371201.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号