search for multiple keywords with php and mysql (where X like)(使用 php 和 mysql 搜索多个关键字(其中 X 喜欢))
问题描述
我有一个代码可以使用 ajax 动态搜索数据库中的数据,但我一次只能搜索 1 个关键字.我想修改它以便我可以搜索多个关键字.现在,如果我输入2个用空格隔开的关键字,在数据库中,数据没有用空格隔开,则不会有结果.如果数据库中的数据是:
I have a code that dynamically search for data in the database using ajax but I can search for only 1 keyword in a time. I would like to modify it so I can search for multiple keywords. Now, if I type 2 keywords separated by a space and in the database, the data is not separated by a space, there will be no result. If in the database the data is:
'playstation3' 或 'play cool station3'
'playstation3' or 'play cool station3'
然后我搜索:
游戏站
不会有结果.我想知道是否可以修改我的代码,以便我可以搜索 2 个或更多关键字或单词,这些关键字或单词由空格或另一个单词、点或下划线或 (-) 或 (+) 或 (%) 分隔或(其他任何东西,哈哈).
there would be no results. I would like to know if it possible to modify my code so I can search 2 or more keywords or words separated by a space or another word or a DOT or an underscore or a (-) or a (+) or a (%) or (anything else lol).
我知道我应该使用 pdo 或 mysqli,但我仅将其用于测试!
I know that I should use pdo or mysqli but i'm using this for testing only!
$queried = $_POST['query'];
$search = mysql_query("SELECT * FROM links WHERE name LIKE '%$queried%'");
while($searche = mysql_fetch_array($search)){
echo "".$searche['link']."</br>".$searche['name']."</br>".$searche['size']."</br>".$searche['category']."<hr></br></br>";
}
推荐答案
动态搜索所有关键字,可以使用explode功能将所有关键字分开;
To dynamically search all keywords, you can use the explode function to seperate all keywords;
$queried = mysql_real_escape_string($_POST['query']); // always escape
$keys = explode(" ",$queried);
$sql = "SELECT * FROM links WHERE name LIKE '%$queried%' ";
foreach($keys as $k){
$sql .= " OR name LIKE '%$k%' ";
}
$result = mysql_query($sql);
注意 1:在您的查询中使用用户输入之前,请务必对其进行转义.
Note 1: Always escape user input before using it in your query.
注意 2: mysql_* 函数已弃用,请使用 Mysqli 或 PDO 作为替代
Note 2: mysql_* functions are deprecated, use Mysqli or PDO as an alternative
2018 年更新 - 注意 3: 不要忘记检查 $queried
变量的长度并设置限制.否则,用户可能会输入一个不同的大字符串并导致您的数据库崩溃.
Update 2018 - Note 3: Don't forget to check the length of the $queried
variable and set a limit. Otherwise the user can input a vary large string and crash your database.
这篇关于使用 php 和 mysql 搜索多个关键字(其中 X 喜欢)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用 php 和 mysql 搜索多个关键字(其中 X 喜欢)
基础教程推荐
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- HTTP 与 FTP 上传 2021-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01
- 使用 PDO 转义列名 2021-01-01