我正在尝试使用通配符构建一个准备好的语句,但是我遇到了一个问题,其中百分比通配符似乎返回了通配符的哈希值,我不确定为什么。有问题的代码是:
$condition = $wpdb->prefix."posts.post_title LIKE %%%s%%";
$query['conditions'][] = $wpdb->prepare($condition, $name);
结果是:
posts.post_title LIKE {d690dd63f5944b9bca120e110c22802f0ec841d8120d813dd4abc08cba4a59c0}BT{d690dd63f5944b9bca120e110c22802f0ec841d8120d813dd4abc08cba4a59c0}
只是想知道是否有人对造成这种情况的原因有任何想法。任何帮助将不胜感激。
Thanks
不用担心哈希值,当您执行查询时,它们将被 $wpdb 中的 % 替换。
这些哈希值是在 WP v4.8.3 中引入的,作为 SQL 注入攻击的修复。
它们是 % 字符的占位符。它可以防止某人使用 %s、%d 和 %f 之外的其他内容。如果除了那些批准的用途之外还有%,它将用哈希值替换%。当 $wpdb 执行查询时,该哈希值将被替换回 %。
如果您想自己删除哈希值,可以使用remove_placeholder_escape()
,像这样:
$query['conditions'][] = $wpdb->remove_placeholder_escape($wpdb->prepare($condition, $name));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)