WPDB准备类似%-占位符?

时间:2018-05-18 作者:Paul

这些是{xxx...} 的占位符% 在一个类似的声明中正常吗?如果是这样的话,他们什么时候会转换回%\'s

SHELL
wp> global $wpdb;
wp> $q = "%s";
=> string(2) "%s"
wp> $pq = $wpdb->prepare($q, \'%hi%\');
=> string(136) "\'{6e039dc0b074a5ff6828a070d0c24708d132341f32dff55a053f1410beabaacd}hi{6e039dc0b074a5ff6828a070d0c24708d132341f32dff55a053f1410beabaacd}\'"

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

是的,他们很正常。它们是在4.8.3中添加的,用于修复SQL注入漏洞。

您可以阅读一篇文章,描述发生这种情况的技术原因here 还有零钱的票here.

占位符字符将替换为$wpdb->prepare() 使用$wpdb->add_placeholder_escape() 函数,该函数调用$wpdb->placeholder_escape() 内部。

这些占位符将在中删除$wpdb->query()$wpdb->remove_placeholder_escape() 作为过滤器添加到query

结束

相关推荐

WordPress,尝试插入数据时出错>>注意:wpdb::Prepare调用不正确

我有以下代码将多行插入到我的自定义WordPress表中。当我运行表单提交数据并将其插入WordPress数据库时,我收到以下错误消息:注意:wpdb::prepare的调用不正确。不支持的值类型(数组)。警告:mysqli\\u real\\u escape\\u string()要求参数2为string, global $wpdb; $values = array(); $place_holders = array(); $query =