php - MySQL PHP 搜索使用一个输入来搜索多列

标签 php mysql database

首先对我的英语感到抱歉,但我会尽力阐明我的想法。 我的目标:使用一个输入字段在多列中进行搜索。我将举一个例子,让大家更容易、更清楚地理解。

我有很多不同品牌的CPU。因此,如果我要写“CPU”,它将为我提供所有品牌的所有 CPU,但如果我要继续写“CPU Lenovo”,它将仅向我显示联想品牌的 CPU。因此更多细节可以提供更具体的结果。

这是我的代码:

<?php

require ('connection.php');

if (!empty($_POST['partname'])) {
    $search = explode(" ", rtrim($_POST['partname'], " "), 2);

    $prlist_name = "";
    $prlist_model = "";
    foreach ($search AS $s) {

        $prlist_name .= "`prlist_name` LIKE '%" . mysql_real_escape_string($s) . "%' AND ";
        $prlist_model .= "`prlist_model` LIKE '%" . mysql_real_escape_string($s) . "%' OR ";
    }

    $prlist_name = substr($prlist_name, 0, -4);
    $prlist_model = substr($prlist_model, 0, -4);

    $query = mysql_query("SELECT * FROM `prlist` WHERE ($prlist_name) AND ($prlist_model)");

    if (mysql_num_rows($query) > 0) {

        while ($row = mysql_fetch_assoc($query)) {
            echo "<tr>";
            echo "<td>" . $row['prlist_name'] . "</td>";
            echo "<td>" . $row['prlist_model'] . "</td>";
            echo "</tr>";
        }
    }
} else {
    header('Location: index.php');
    exit();
}
?>

我的代码的问题是单独搜索。我的意思是,如果我要写“CPU Lenovo”。它会向我展示联想的全部部件。示例:

  1. CPU |联想G580
  2. 内存 |联想T430
  3. CPU |联想Z500

就是这样。谢谢大家:)

最佳答案

SELECT * FROM prlist WHERE MATCH (prlist_name,prlist_model)
AGAINST ('+CPU +Lenovo' IN BOOLEAN MODE);

http://dev.mysql.com/doc/refman/5.6/en/fulltext-boolean.html

关于php - MySQL PHP 搜索使用一个输入来搜索多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23706313/

相关文章:

PHP - 如何计算从特定日期算起的月数

PHP/MySQL - 其中列不是 0/NULL

php - 为什么类似的mysql查询不会执行?

mysql - 如何在mysql查询中过滤非空值?

php - 带有子 PHP/MYSQL 的类别

php - 带有 session 变量的查询语句

mysql - 如何将新数据插入表并删除旧数据而不阻止用户读取旧数据直到进程结束(MySql)

mysql - 需要 SQL View 创建查询帮助

php - 在 PHP 中设置 float 的精度

php - 查询需要优化还是我只需要更高的最大连接数?