【问题标题】:MYSQL multiple words search resultMYSQL多词搜索结果
【发布时间】:2018-12-10 15:23:47
【问题描述】:

当我输入大约三个或更多关键字时,它似乎只搜索第一个关键字,即螺栓螺母垫圈,它只会搜索螺栓。
我想在输入时搜索多个关键字或完整的搜索词。

这是代码:

if (!(isset($_GET['pagenum']))) {
    $pagenum = 1;
} else {
    $pagenum = $_GET['pagenum'];
}
$page_limit = ($_GET["show"] <> "" && is_numeric($_GET["show"]) ) ? $_GET["show"] : 8;

try {
    $keyword = trim($_GET["keyword"]);
    if ($keyword <> "" ) {
        $sql = "SELECT * FROM tbl_contacts WHERE 1 AND "
. " (first_name LIKE :keyword OR contact_no1 LIKE :keyword) ORDER BY first_name ";
        $stmt = $DB->prepare($sql);
        $stmt->bindValue(":keyword", $keyword."%");
    } else {
        $sql = "SELECT * FROM tbl_contacts WHERE 1 ORDER BY first_name ";
        $stmt = $DB->prepare($sql);
    }
    $stmt->execute();
    $total_count = count($stmt->fetchAll());
    $last = ceil($total_count / $page_limit);

    if ($pagenum < 1) {
        num < 1) {
    } elseif ($pagenum > $last) {
        $pagenum = $last;
    }
    $lower_limit = ($pagenum - 1) * $page_limit;
    $lower_limit = ($lower_limit < 0) ? 0 : $lower_limit;
    $sql2 = $sql . " limit " . ($lower_limit) . " ,  " . ($page_limit) . " ";
    $stmt = $DB->prepare($sql2);

    if ($keyword <> "" ) {
        $stmt->bindValue(":keyword", $keyword."%");
        $stmt->execute();
        $results = $stmt->fetchAll();
    }
} catch (Exception $ex) {
    echo $ex->getMessage();
}

【问题讨论】:

  • 欢迎来到 StackOverflow!请详细说明您要实现的目标,问题是什么以及您已经尝试解决的问题。另外,请考虑发布相关代码 sn-ps 并查看 this help article。干杯:)

标签: php mysql search keyword


【解决方案1】:

我想通了。通过更改修复:

. " (first_name LIKE :keyword OR contact_no1 LIKE :keyword) ORDER BY first_name ";

. " (first_name LIKE '%".$keyword."%' OR contact_no1 LIKE '%".$keyword."%') ORDER BY last_name DESC ";

现在搜索返回输入的任何关键字

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    相关资源
    最近更新 更多