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

时间:2014-05-17 00:13:23

标签: 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();
}
?>

我的代码问题是单独搜索。我的意思是,如果我要写&#34; CPU联想&#34;。它将向我展示联想的全部部件。例如:

  1. CPU |联想G580
  2. RAM |联想T430
  3. CPU |联想Z500
  4. 那就是它。谢谢大家:))

1 个答案:

答案 0 :(得分:0)

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