R14*_*523 6 php mysql wordpress prepared-statement sql-like
我正在尝试使用通配符构建一个准备好的语句,但是我遇到了一个问题,其中百分比通配符似乎返回了通配符的哈希值,我不确定为什么。有问题的代码是:
$condition = $wpdb->prefix."posts.post_title LIKE %%%s%%";
$query['conditions'][] = $wpdb->prepare($condition, $name);
Run Code Online (Sandbox Code Playgroud)
结果是:
posts.post_title LIKE {d690dd63f5944b9bca120e110c22802f0ec841d8120d813dd4abc08cba4a59c0}BT{d690dd63f5944b9bca120e110c22802f0ec841d8120d813dd4abc08cba4a59c0}
Run Code Online (Sandbox Code Playgroud)
只是想知道是否有人对造成这种情况的原因有任何想法。任何帮助将不胜感激。
谢谢
Mic*_*ili 16
不用担心哈希值,当您执行查询时,它们将被 $wpdb 中的 % 替换。
这些哈希值是在 WP v4.8.3 中引入的,作为 SQL 注入攻击的修复。
它们是 % 字符的占位符。它可以防止某人使用 %s、%d 和 %f 之外的其他内容。如果除了那些批准的用途之外还有%,它将用哈希值替换%。当 $wpdb 执行查询时,该哈希值将被替换回 %。
如果您想自己删除哈希值,可以使用remove_placeholder_escape(),如下所示:
$query['conditions'][] = $wpdb->remove_placeholder_escape($wpdb->prepare($condition, $name));
| 归档时间: |
|
| 查看次数: |
3159 次 |
| 最近记录: |