2014-05-17 156 views
0

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

我有很多不同品牌的CPU。所以如果我要写“CPU”,它会给我所有品牌的所有CPU,但是如果我要继续写“CPU联想”,它会向我展示只适用于联想品牌的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联想”。它会显示联想的整个部分。例如:

  1. CPU |联想G580
  2. RAM |联想T430
  3. CPU |联想Z500

就是这样。感谢所有:)

+0

你应该找到在MySQL的布尔全文搜索 –

+0

@AlexanderCeballos谢谢:) –

回答