我有一段代码可以使用 ajax 动态搜索数据库中的数据,但我一次只能搜索 1 个关键字。我想修改它,以便我可以搜索多个关键字。现在,如果我键入 2 个用空格分隔的关键字,并且在数据库中,数据没有用空格分隔,则不会有结果。 如果在数据库中数据是:
'playstation3' or 'play cool station3'
然后我搜索:
play station
没有结果。我想知道是否可以修改我的代码,以便我可以搜索 2 个或更多关键字或由空格或另一个词或点或下划线或 (-) 或 (+) 或 (%) 分隔的词或(其他任何东西,哈哈)。
我知道我应该使用 pdo 或 mysqli,但我仅将其用于测试!
$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函数将所有关键词分开;
$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:在您的查询中使用用户输入之前,请务必转义它。
注意2:mysql_* 函数已弃用,请使用Mysqli 或PDO 作为替代
2018 年更新 - 注意 3:不要忘记检查 $queried
变量的长度并设置限制。否则用户可能会输入不同的大字符串并导致数据库崩溃。
关于php - 使用 php 和 mysql 搜索多个关键字(X 喜欢),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15538479/