php - 使用 php 和 mysql 搜索多个关键字(X 喜欢)

标签 php mysql search

我有一段代码可以使用 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/

相关文章:

MySQL:建表时 "KEY"代表什么?

search - 最适合前缀匹配搜索的数据结构

arrays - 复杂度为 O(log n) 的搜索算法,UNSORTED 列表/数组

php - 如果图像标签是从数据库动态创建的,我如何使用 javascript 或 php 来确定何时加载图像?

php - 将序列分段到最大随机性(数组,任何语言)

php - 使用单个查询插入两个表

javascript - 为什么我的表头在过滤表数据时消失了?

PHP & PDO : One Connection vs More-than-one Connections

mysql multiple Insert where select many column from another table

mysql - 从 SKU 获取永久链接