如何使用$wpdb->准备更新定制表

时间:2014-03-12 作者:user759235

作为一个noob,我不了解很多SQL注入,但我需要保存,所以我读到我必须使用wpdb->prepare来确保数据存储正确。

此时,我使用了$wpdb->update()查询,因此我需要一些帮助来将其转换为带有$wpdb->prepare()的save查询。

$wpdb->update(\'custom_table\',
    array(
    \'option_1\' => \'hello\', 
    \'option_2\' => 2,
    \'option_3\' => \'world\'
    ),
    array(\'option_name\' => \'some name\'),
    array(\'%s\',\'d%\',\'%s\')
);

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

当你看到Codex article on $wpdb, 然后您将看到您当前的用法是正确的。最后一个参数

array( \'%s\', \'%d\', \'%s\' )
已经表明sprintf/printf 在后台进行。

这个$wpdb->prepare() 其他方法都不需要方法。需要它的人:

$wpdb->query()
$wpdb->get_var()
$wpdb->get_col()
$wpdb->get_row()
$wpdb->get_results()
和简单的SQL查询,如:

$sqlQuery = $wpdb->prepare( "SELECT etc.", /* list of replacements */ );
最后一个可能总是被包裹在里面$wpdb->query() 无论如何

SO网友:SaschArt

如果总是转义输入,例如:post、get、request、cookie,则不可能进行SQL注入。$input_var=mysql_real_escape_string($input_var);

或更好此功能:

function doEscape($str) {
  return get_magic_quotes_gpc() ? mysql_real_escape_string(stripslashes($str)):mysql_real_escape_string($str);
}

结束