折旧调用->函数wpdb::逸出()

时间:2015-11-05 作者:user3788320

我的调试日志中有很多错误:

折旧调用->函数wpdb::escape()-改用wpdb::prepare()或esc\\u sql()

我不只是关闭调试日志,而是试图“修复”出现故障的插件。以下是使用wpdb::escape():

$wpdb->query(sprintf(
      "UPDATE %s SET %s = \'%s\' WHERE ID = %d"
      , $wpdb->posts
      , $wpdb->escape($key)
      , $wpdb->escape($visibility)
      , $post_id
));

1 个回复
SO网友:s_ha_dum

prepare 与escape的工作方式稍有不同,它可以处理整个字符串并管理引用。

$pat = "UPDATE {$wpdb->posts} SET %s = %s WHERE ID = %d";
$qry = $wpdb->prepare(
  $pat,
  $key,
  $visibility,
  $post_id
);
$wpdb->query($qry);
您根本不需要交换表名,并且prepare 无法将其交换,因为表名将被引用,SQL将中断。