首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP关键字搜索多个字段填充新输入

问PHP关键字搜索多个字段填充新输入
EN

Stack Overflow用户
提问于 2014-01-08 21:07:46
回答 1查看 345关注 0票数 0

我有一个HTML输入字段,其中的值由字符串中的每个空格来爆炸和分隔。然后,该字符串在数据库中搜索匹配项,如果有匹配,则返回值,但是,我希望从原始字符串中搜索一个表中的多个字段。

希望这能澄清问题:

例如,如果用户搜索'Sheldon男孩跳投‘,我希望数据库在数据库的每个字段中搜索匹配形式,例如school_name、性别、product_type。目前,我只为一个字段工作,但我想返回并收集所有三个字段的值。

这是我的代码:

代码语言:javascript
复制
  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'];
    }
}
EN

回答 1

Stack Overflow用户

发布于 2014-01-25 20:13:41

为了安全和方便,你真的很想使用PDO。不管怎样,你还是需要准备一份声明。

代码语言:javascript
复制
$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。

代码语言:javascript
复制
$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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21006532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档