数据库搜索,如谷歌

NVG*_*NVG 5 php mysql sql database search

我目前在PHP + MYSQL网站上有一个搜索选项.

MYSQL查询目前类似于"SELECT pageurl WHERE name LIKE'%$ query%'.

我在这里发布的原因是因为我注意到如果我的一个产品的名称是"Blue Bike"并且有人寻找"Bike Blue",则不会返回任何结果.

我正在寻找一个解决方案,因为我知道如果我输入谷歌相同的单词,会出现一些问题.

我想创建一个PHP函数来混合查询中的所有单词,如果查询有4个或更少的单词,产生大约24个查询.

有更简单的解决方案吗?

谢谢你的时间

h2o*_*ooo 5

至于没有工作答案就不要这样做:

<?php
    $search = 'this is my search';

    $searchSplit = explode(' ', $search);

    $searchQueryItems = array();
    foreach ($searchSplit as $searchTerm) {
        /*
         * NOTE: Check out the DB connections escaping part 
         * below for the one you should use.
         */
        $searchQueryItems[] = "name LIKE '%" . mysqli_real_escape_string($searchTerm) . "%'";
    }

    $query = 'SELECT pageurl FROM names' . (!empty($searchQueryItems) ? ' WHERE ' . implode(' AND ', $searchQueryItems) : '');
?>
Run Code Online (Sandbox Code Playgroud)

数据库连接转义

mysqli_:

继续使用mysqli_real_escape_string或使用$mysqli->real_escape_string($searchTerm).

mysql_:

如果你使用mysql_你应该使用mysql_real_escape_string($searchTerm)(并考虑改变,因为它已被弃用).

PDO:

如果您使用PDO,您应该使用trim($pdo->quote($searchTerm), "'").