使用PHP Mysqli创建高级搜索查询

时间:2018-05-30 06:49:36

标签: php mysqli

我已经开始开发项目了,我需要使用 PHP Mysqli 的高级搜索查询,但是我遇到了一些麻烦。请查看我的查询。

"value":"[concat(reference(resourceId('Microsoft.Web/certificates', variables('certificateName'))).Thumbprint,',',reference(resourceId('Microsoft.Web/certificates', variables('certificateName1'))).Thumbprint)]"

它的工作完美!但仍然没有匹配包含符号的条目,例如,如果我的数据库包含一行名为“颜色:红色”并且某人键入“颜色红色”,则查询将返回空,但如果我输入“颜色:红色”返回找到。那么,我该怎么办才能解决这个问题呢?

由于

3 个答案:

答案 0 :(得分:0)

为了保持一致性,我能想到的一件事是你可以在查询中消除':'以进行匹配。请尝试以下查询:

$query = "SELECT id, name, keybox, posterid, alias, xmdb from `datasys` WHERE REPLACE(name, ':', '') LIKE '%REPLACE(".$filter.", ':', '')%' OR REPLACE(keybox, ':', '') LIKE '%REPLACE(".$filter.", ':', '')%' ORDER BY id LIMIT 0, 10";

希望这有帮助。

答案 1 :(得分:0)

将REGEXP用作: -

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

或在WHERE子句中使用REPLACE()函数: -

SELECT * FROM table WHERE columnName REGEXP "regular_expression";

答案 2 :(得分:0)

使用两个查询来查找完整和类似的记录。 如果Exact数据查询中可用的记录则无需运行类似的数据查询

 <?php
//Fetches Exact Data
    $query = "SELECT id, name, keybox, posterid, alias, xmdb from `datasys` WHERE name LIKE '%".$filter."%' OR keybox LIKE '%".$filter."%' ORDER BY id LIMIT 0, 10";

    //If the previous query doesn't return any value, then use
    //Split the the user input and then query DB
    $condition="name!=''";
    $filters=explode(" ",$filter);
    foreach($filters as $val)
    {
        $condition.=" or (name LIKE '%$val%' OR keybox LIKE '%$val%')";
    }
//Fetches Similar Data
    $query = "SELECT id, name, keybox, posterid, alias, xmdb from `datasys` WHERE $condition ORDER BY id LIMIT 0, 10";

    //-----------ENDS
    ?>