[英]PHP Keyword search multiple fields populate new input
我有一个HTML输入字段,该字段的值被分解并由字符串中的每个空格分隔。 然后,此字符串在数据库中搜索匹配项,如果存在匹配项,则返回值,但是我想从原始字符串的一个表中搜索多个字段。
希望这会清除一切:
例如,如果用户搜索“ Sheldon boys 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'];
}
}
您确实确实想使用PDO来确保安全和方便。 无论哪种方式,您仍然需要准备一个语句。
$fields = array('fields','you','want','to','search');
foreach($keywords as $keyword) {
foreach ($fields as $field) {
$i++; // dump variable
if($i == 1) {
$query .= "$field LIKE '$keyword' ";
} else {
$query .= "OR $field LIKE '$keyword' ";
}
}
$ i == 1为弱。 您可以设置$ i = false,然后设置if($ i === true),从而不必为每个循环增加变量。 或者,在每一行的末尾(或不要在开头)使用OR,也不要在最终查询字符串中使用OR的最后一个实例。 这还将从每个循环中删除if。
$fields = array('fields','you','want','to','search');
foreach($keywords as $keyword) {
foreach ($fields as $field) {
$query .= "$field LIKE '$keyword' OR ";
}
}
$query = substr($query, 0, strlen($query) - 4);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.