首先对我的英语感到抱歉,但我会尽力阐明我的想法。 我的目标:使用一个输入字段在多列中进行搜索。我将举一个例子,让大家更容易、更清楚地理解。
我有很多不同品牌的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”。它会向我展示联想的全部部件。示例:
- CPU |联想G580
- 内存 |联想T430
- 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/