【发布时间】:2014-01-08 21:07:46
【问题描述】:
我有一个 HTML 输入字段,其中的值被分解并由字符串中的每个空格分隔。然后,此字符串在数据库中搜索匹配项,如果有匹配项则返回值,但是我想从原始字符串中搜索一个表中的多个字段。
希望这能解决问题:
例如,如果用户搜索“Sheldon boy jumper”,我希望数据库在数据库的每个字段中搜索匹配的每个关键字,例如 [school_name]、[sex]、[product_type]。目前我为一个字段工作,但我想返回并收集所有三个字段的值。
这是我的代码:
if (empty($_POST) === false) {
if(empty($_POST['title']) === true) {
$no_data = '<div class="alert alert-danger center">Please enter a title</div>';
} else {
$item_title = $_POST['title'];
$keywords = explode(" ", $item_title);
$query = "SELECT * FROM products WHERE ";
foreach($keywords as $keyword) {
$i++; // dump variable
if($i == 1) { $query .= "product LIKE '$keyword' "; }
else { $query .= "OR product LIKE '$keyword' "; }
}
$query = mysql_query($query);
$numrows = mysql_num_rows($query);
$row = mysql_fetch_assoc($query);
echo $row['product'];
}
}
【问题讨论】:
-
Please, don't use
mysql_*functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。如果您选择 PDO,here is a good tutorial。 你也对SQL injections敞开心扉 -
你试过什么? (比搜索一个字段的工作代码更远)
-
感谢约翰提供有用的 cmets,我没有意识到这一点!