PHP MYSQL布尔型全文本搜索-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

PHP MYSQL布尔型全文本搜索

2019-11-15 11:44:46 264 1

我发现布尔全文本搜索非常有用,但是由于某些原因,我无法弄清楚为什么我无法从查询中得到结果。

我的查询如下:

if(isset($_REQUEST['fname']) and $_REQUEST['fname']!=""){ $condition .= ' AND MATCH (fname, lname, mname) AGAINST('.(+$_REQUEST['fname']).' IN BOOLEAN MODE) ' ; } 该功能支持哪个功能;

public function get($tableName, $whereAnd = array(), $whereOr = array(), $whereLike = array()) { $cond = ''; $s=1; $params = array(); foreach($whereAnd as $key => $val) { $cond .= " And ".$key." = :a".$s; $params['a'.$s] = $val; $s++; } foreach($whereOr as $key => $val) { $cond .= " OR ".$key." = :a".$s; $params['a'.$s] = $val; $s++; } foreach($whereLike as $key => $val) { $cond .= " OR ".$key." like '% :a".$s."%'"; $params['a'.$s] = $val; $s++; } $stmt = $this->pdo->prepare("SELECT $tableName.* FROM $tableName WHERE 1 ".$cond); try { $stmt->execute($params); $res = $stmt->fetchAll();

    if (! $res || count($res) != 1) {
       return $res;
    }
    return $res;
} catch (\PDOException $e) {
    throw new \RuntimeException("[".$e->getCode()."] : ". $e->getMessage());
}

}

public function getAllRecords($tableName, $fields='*', $cond='', $orderBy='', $limit='') { //echo "SELECT $tableName.$fields FROM $tableName WHERE 1 ".$cond." ".$orderBy." ".$limit; //print "
SELECT $fields FROM $tableName WHERE 1 ".$cond." ".$orderBy." ".$limit; $stmt = $this->pdo->prepare("SELECT $fields FROM $tableName WHERE 1 ".$cond." ".$orderBy." ".$limit); //print "SELECT $fields FROM $tableName WHERE 1 ".$cond." ".$orderBy." " ; $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); return $rows; } 然后是搜索字段:

但是当我进行搜索时,无论是fname一个人还是一个人,都没有结果fname+lname。

问题来源于stack overflow

取消 提交回答
全部回答(1)
  • 保持可爱mmm
    2019-11-15 11:44:57

    您的问题在于表达式的这一部分:

    (+$_REQUEST['fname']) 当您+在值前面添加时,PHP会尝试将其转换为数字值,并且(因为它大概是一个单词)会给出非数字值警告并返回0。我想您打算将其+放入整体表达式中即

    $condition .= " AND MATCH (fname, lname, mname) AGAINST('+{$_REQUEST['fname']}' IN BOOLEAN MODE) "; 准备一份声明会帮助您避免这些问题,

    $condition .= " AND MATCH (fname, lname, mname) AGAINST(? IN BOOLEAN MODE) "; 然后将参数绑定到"+{$_REQUEST['fname']}"。

    0 0
相关问答

1

回答

PHP连接mysql出现问题

2020-05-23 21:00:25 708浏览量 回答数 1

1

回答

php连接mysql识别不到端口号

2016-02-08 13:53:19 2609浏览量 回答数 1

1

回答

php 连接mysql问题

2016-02-08 14:13:14 2034浏览量 回答数 1

2

回答

求问php连接mysql

2014-02-19 22:04:57 8450浏览量 回答数 2

1

回答

PHP与 mysql在ubuntu环境下的编码问题 ,求助

2016-01-31 17:53:12 1954浏览量 回答数 1

1

回答

如何快速处理当PHP+Mysql 同时插入1W条数据时?

2016-01-31 16:22:07 2797浏览量 回答数 1

1

回答

为何php jQuery MySQL显示中文乱码

2016-01-31 15:33:27 2206浏览量 回答数 1

1

回答

php中如何设置mysql查询的超时时间

2016-01-25 17:12:53 2877浏览量 回答数 1

1

回答

ESC怎么配置php+mysql环境

2016-01-16 13:10:51 4486浏览量 回答数 1

3

回答

在阿里云ECS里面安装了Centos 6 64位Nginx、PHP、MySQL主机宝镜像,结果。。。

2016-01-10 11:19:03 4678浏览量 回答数 3
66
文章
12595
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载