我想在仍然使用WordPress$wpdb类清理和准备输入的同时使用like%text%语句。
SELECT column_1 from `prefix_my_table` WHERE column_2 LIKE \'%something%\';
我试过这样的方法,但没有成功:
$wpdb->prepare( "SELECT column_1 from `{$wpdb->base_prefix}my_table` WHERE column_2 LIKE %s;", like_escape($number_to_put_in_like));
如何使用WordPress数据库类正确准备%LIKE%SQL语句?
最合适的回答,由SO网友:Jan Fabry 整理而成
这个$wpdb->esc_like
函数存在于WordPress中,因为常规数据库转义不会转义%
和_
字符。这意味着您可以将它们添加到wpdb::prepare()
没有问题。这也是what I see in the core WordPress code:
$wpdb->prepare(" AND $wpdb->usermeta.meta_key = \'{$wpdb->prefix}capabilities\' AND $wpdb->usermeta.meta_value LIKE %s", \'%\' . $this->role . \'%\');
因此,您的代码如下所示:
$wpdb->prepare(
"SELECT
column_1
FROM
`{$wpdb->base_prefix}my_table`
WHERE
column_2 LIKE %s;",
\'%\' . $wpdb->esc_like($number_to_put_in_like) . \'%\'
);
您还可以添加
%%
在查询中获取文本
%
(
wpdb::prepare()
使用
vsprintf()
在后台,
which has this syntax), 但请记住
your string will not be quoted, 你必须自己添加引号(这不是你通常必须做的
wpdb::prepare()
.