V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
anonymoustian
V2EX  ›  PHP

PHP 如何进行 mysql 的模糊查询? 有成熟的库没?

  •  
  •   anonymoustian · 2017-01-09 21:16:23 +08:00 · 3644 次点击
    这是一个创建于 2881 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在我进行模糊查询是靠字符串的拼接,代码如下:

    $sql = "SELECT * FROM pdns.rdata_copy WHERE rdomain LIKE '%".$_GET['domain']."'";

    $ccdomain = $db->rawQuery($sql);

    但是这样不就成了 SQL 注入了么,能否可以有一些库函数进行 预编译的那种分离的 可以直接调用呢?

    8 条回复    2017-01-10 08:07:48 +08:00
    kaolalotree
        1
    kaolalotree  
       2017-01-09 21:25:25 +08:00
    对获取的参数封一层 addcslash 呗
    odoooo
        2
    odoooo  
       2017-01-09 21:28:20 +08:00 via iPhone
    pdo
    Jakesoft
        3
    Jakesoft  
       2017-01-09 22:05:48 +08:00
    楼主看一下 pdo 的预处理语句和参数绑定
    jarlyyn
        4
    jarlyyn  
       2017-01-09 22:13:49 +08:00
    pdo
    wh1012023498
        5
    wh1012023498  
       2017-01-09 23:09:13 +08:00
    mingl0280
        6
    mingl0280  
       2017-01-10 02:43:51 +08:00
    Mysqli 的 Prepared 语句
    PDO 的 Prepared 语句
    都可以完全解决注入问题。
    例如
    $sqli = new mysqli();
    $sqli->connect(host, username, password, database);
    $stmt = $sqli->prepare('SELECT passhash FROM users WHERE username=?');
    $usn = $_POST['User'];
    $stmt->bind_param('s', $usn);
    $stmt->execute();
    $stmt->bind_result($queryResult);
    $stmt->fetch();
    if (strtolower($queryResult) == strtolower($_POST['pass']))
    txlty
        7
    txlty  
       2017-01-10 03:54:08 +08:00
    字符串拼接可以用。但不能直接把外部数据拼进来。必须处理一下。
    最古老的函数是 addslashes , mysql 对应函数是 mysql_real_escape_string 。
    mysqli 对应函数是 mysqli_real_escape_string , PDO 对应方法是 quote 。
    前两者在 GBK 编码下会间接产生漏洞。推荐后两者。
    abc123ccc
        8
    abc123ccc  
       2017-01-10 08:07:48 +08:00
    1 、模糊查询: PDO 首选,楼上已经给出方法了,我就不写了。
    2 、成熟库:网上到有一个据说是 TP3.1 框架内挖出来的库,不晓得楼主能不能使用得习惯。好像还有一个近似 CI 用的 DB 库。我就知道这两个在网上能找到。这些都是用 PDO 的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1957 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:02 · PVG 08:02 · LAX 16:02 · JFK 19:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.