V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
anonymoustian
V2EX  ›  PHP

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

  •  
  •   anonymoustian · Jan 9, 2017 · 4219 views
    This topic created in 3398 days ago, the information mentioned may be changed or developed.

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

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

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

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

    8 replies    2017-01-10 08:07:48 +08:00
    kaolalotree
        1
    kaolalotree  
       Jan 9, 2017
    对获取的参数封一层 addcslash 呗
    odoooo
        2
    odoooo  
       Jan 9, 2017 via iPhone
    pdo
    Jakesoft
        3
    Jakesoft  
       Jan 9, 2017
    楼主看一下 pdo 的预处理语句和参数绑定
    jarlyyn
        4
    jarlyyn  
       Jan 9, 2017
    pdo
    wh1012023498
        5
    wh1012023498  
       Jan 9, 2017
    mingl0280
        6
    mingl0280  
       Jan 10, 2017
    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  
       Jan 10, 2017
    字符串拼接可以用。但不能直接把外部数据拼进来。必须处理一下。
    最古老的函数是 addslashes , mysql 对应函数是 mysql_real_escape_string 。
    mysqli 对应函数是 mysqli_real_escape_string , PDO 对应方法是 quote 。
    前两者在 GBK 编码下会间接产生漏洞。推荐后两者。
    abc123ccc
        8
    abc123ccc  
       Jan 10, 2017
    1 、模糊查询: PDO 首选,楼上已经给出方法了,我就不写了。
    2 、成熟库:网上到有一个据说是 TP3.1 框架内挖出来的库,不晓得楼主能不能使用得习惯。好像还有一个近似 CI 用的 DB 库。我就知道这两个在网上能找到。这些都是用 PDO 的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2481 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 09:54 · PVG 17:54 · LAX 02:54 · JFK 05:54
    ♥ Do have faith in what you're doing.