【问题标题】:Query with dynamic variables in clause WHERE [duplicate]在 WHERE 子句中使用动态变量进行查询
【发布时间】:2015-11-11 02:32:07
【问题描述】:

我想创建一个动态 SQL 查询。例如,也许有一次我只想按姓名搜索,而在其他情况下,我想按姓名和姓氏搜索。仅用参数填充的 sql_query 是否可行?

 public static function test($name,$surname) {

    $db = DBInstance::getInstance();
    $mysqli = $db->getConnection();

    $sql = 'SELECT name FROM users WHERE ' .
            'name = ? AND ' .
            'surname = ?';

    /* Prepare statement */
    $stmt = $mysqli->prepare($sql);



    /* Bind parameters. Types: s = string, i = integer, d = double,  b = blob */
    $stmt->bind_param('ss', $name, $surname);

    /* Execute statement */
    $stmt->execute();

    /* Fetch result to array */
    $res = $stmt->get_result();
    while ($row = $res->fetch_array(MYSQLI_ASSOC)) {
       var_dump($row);
    }


}

谢谢。

【问题讨论】:

    标签: mysql sql dynamic mysqli


    【解决方案1】:

    您可以将查询更改为:

    SELECT name FROM users WHERE name = ? AND姓喜欢

    当你想按名字搜索时,test($name,$surname) 的参数将是 --> test('yourname','%');

    这里请注意,% 是通配符,查询中的姓氏使用“like”,所以最后查询将是:

    SELECT name FROM users WHERE name = 'yourname' AND surname like '%'。 它将搜索的是数据将“您的姓名”作为姓名和任何姓氏的值。

    现在,如果您想按姓名和姓氏搜索,那么您可以将函数调用为 --> 测试('你的名字','你的名字') 因此查询将变为:

    SELECT name FROM users WHERE name = 'yourname' AND surname like 'yoursurname'。 它将搜索的数据将“yourname”作为姓名,“yoursurname”作为姓氏。因此,只需使用单个查询即可解决两个目的

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    相关资源
    最近更新 更多