准备函数SQL安全方法

时间:2016-09-17 作者:Por

我对使用$wpdb->prepare 函数用法。https://codex.wordpress.org/Class_Reference/wpdb#Placeholders 这个链接说prepare方法更好地保护sql注入。所以我用下面的代码来准备。

    $query = $new_wpdb->prepare(
    "INSERT INTO sym_data
    ( user_id, country, dob, height, weight, bmi )
    VALUES ( %d, %s, %s, %d, %d, %f)",
    $user_id, $country, $dob, $height, $weight, $bmi
);


$new_wpdb->query($query);

Check below code

    $new_wpdb->insert(
    \'sym_data\',
    array(
        \'user_id\' => $user_id,
        \'country\' => $country,
        \'dob\' => $dob,
        \'height\' => $height,
        \'weight\' => $weight,
        \'bmi\' => $bmi,

    ),
    array(
        \'%d\',
        \'%s\',
        \'%s\',
        \'%d\',
        \'%d\',
        \'%0.6f\'
    )
);
我想知道这些代码块之间有什么区别。结果是一样的。

First code block is with prepare method

Second one is with placeholder

1 个回复
最合适的回答,由SO网友:cowgill 整理而成

两种方法都可以($new_wpdb->insert 实际使用$new_wpdb->prepare) 并在SQL转义时提供相同级别的安全性。

$new_wpdb->insert 是首选方法,除非您正在编写自己的自定义SQL查询。