【问题标题】:search in myadmin database by two columns using like使用 like 在 myadmin 数据库中搜索两列
【发布时间】:2011-11-07 08:12:38
【问题描述】:

在我的数据库中,我有一列用于名字和姓氏。
在我的代码中,我结合了这两列并将其用作全名。
我在显示中有一个搜索框,看起来像这样,

搜索的代码是这样的,

switch($search_by){

    case "fullname":
        $sql_where_clause = "fname like '".$search_keyword."%';
        break;
    case "user_name":
        $sql_where_clause = "uname like '".$search_keyword."%';
        break;
    }

并且这个 $sql_where_clause 在查询中用于搜索。

当我搜索全名作为 arpi 这是我在数据库中的名字时,它给了我完美的答案,因为我已经完成了名字的代码。 但问题是,当我以 arpi patel 搜索时,其中 arpi 是名字,patel 是姓氏,然后搜索不会执行,因为我没有为此编写代码,因为我不知道如何执行此操作。

有谁知道如何在 $sql_where_clause 中同时触发对我的名字和姓氏列的查询

【问题讨论】:

标签: php database phpmyadmin


【解决方案1】:

您需要在 SQL 查询中使用逻辑运算符,如下所示: $sql_where_clause = "fname LIKE '$fname' AND uname LIKE '$uname'";

如何获得 $fname 和 $uname 变量?如果您的 $search_keyword 如下所示: family name 你可以按空格爆炸它$search_parts = explode(' ', $search_keyword, 2)。但在这种情况下,您不知道哪个部分是家庭,哪个是名称,因此您必须执行这样的查询: $sql_where_clause = "(fname LIKE '${part[0]}' AND uname LIKE '${part[1]}') OR (fname LIKE '${part[1]}' AND uname LIKE '${part[0]}')";

顺便说一句,不要忘记针对 sql-injections 清理您的查询。不好的方法 - 使用 mysql_real_escape_string。好而简单的方法 - 使用 PDO 和预配对查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2012-11-03
    相关资源
    最近更新 更多