【发布时间】:2012-09-07 00:37:51
【问题描述】:
可能重复:
How do I create a PDO parameterized query with a LIKE statement in PHP?
目前我有一个非常简单的搜索引擎,它使用旧的 mysql_* 查询并在查询中使用“like”,我知道这现在已经过时了,并且随着数据库的增长,使用 like 查询会变慢?
我正在寻找一些关于如何使用 PDO 创建搜索引擎的想法,因为它提供的保护比我目前拥有的更多,我研究过在查询中使用 MATCH 和 AGAINST 来搜索“标题”和“描述” " 我的数据库中的列,但由于我是初学者,我不确定从哪里开始。
我一直在试图弄清楚如何实现搜索查询,并在用户输入多个关键字时让搜索正常工作
非常感谢任何帮助,我知道有人向我解释这可能是一个很大的要求,但我正在尽我所能学习,因为我是一名学生并正在做一个项目
感谢大家的帮助!
这是我当前代码的一部分,我希望将其更改并更新为更安全且具有更好搜索功能的内容:
$query = "SELECT * FROM people WHERE ";
foreach ($terms as $each){
$i++;
if ($i == 1)
$query .= "lname LIKE '%$each%' ";
if($i == 1 && $_GET['category'] != '') {
$query .= "AND category = '$chosencategory' ";
}
else
$query .= "AND lname LIKE '%$each%' ";
if($_GET['price'] != '') {
$query .= " ORDER BY price $price";
}
echo $query;
}
【问题讨论】:
-
谢谢!我查看了代码,您知道使用 LIKE 语句对长期性能有什么影响吗?以及 PDO LIKE 语句对您的保护程度如何?
-
如果我在进行搜索,我会使用触发器来索引表 (temp) 以更新和删除,在其上使用 myisam 并匹配比 LIKE 更强大的功能。
-
有/没有 LIKE 的准备好的查询之间没有区别。它同样安全。只要您使用
prepare()就可以了。 -
感谢大家的反馈非常有帮助! @wes 关于索引表和使用匹配/再次,你能给我一些关于如何实现这样的系统的起始点吗?
标签: php mysql database search pdo