搜索查询中大括号内的数字是什么

时间:2018-01-16 作者:Aliiiiiiii

我正在wordpress中处理搜索查询,我注意到在原始查询中,术语位于花括号和数字之间。。。像这样:

wp_posts.post_title LIKE \'{30d0e4b86a2a793010a75740f60810aff6b57f6d18edc10be7ca6dc158e40c06}11{30d0e4b86a2a793010a75740f60810aff6b57f6d18edc10be7ca6dc158e40c06}\'
这是什么?

谢谢

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

这些是的占位符% 标志。如果您发送% 在与你自己进行比较的价值中,你会注意到它的变化\'%test%\' 进入wp_posts.post_title LIKE \'{30d0e4b86a2a793010a75740f60810aff6b57f6d18edc10be7ca6dc158e40c06}\\{30d0e4b86a2a793010a75740f60810aff6b57f6d18edc10be7ca6dc158e40c06}11{30d0e4b86a2a793010a75740f60810aff6b57f6d18edc10be7ca6dc158e40c06}\\{30d0e4b86a2a793010a75740f60810aff6b57f6d18edc10be7ca6dc158e40c06}\' 当你看到$query->request.

数据库端的查询将具有%. 我还没有研究到底是什么原因,在哪里做的,但我最近注意到了这一点。我相信几个版本之前不是这样的,所以可能是最近的更新。

编辑:我已经做了更多的调查。它是在4.8.3中添加的,来自wpdb:

/**
 * Adds a placeholder escape string, to escape anything that resembles a printf() placeholder.
 *
 * @since 4.8.3
 *
 * @param string $query The query to escape.
 * @return string The query with the placeholder escape string inserted where necessary.
 */
public function add_placeholder_escape( $query ) {
    /*
     * To prevent returning anything that even vaguely resembles a placeholder,
     * we clobber every % we can find.
     */
    return str_replace( \'%\', $this->placeholder_escape(), $query );
}

/**
 * Removes the placeholder escape strings from a query.
 *
 * @since 4.8.3
 *
 * @param string $query The query from which the placeholder will be removed.
 * @return string The query with the placeholder removed.
 */
public function remove_placeholder_escape( $query ) {
    return str_replace( $this->placeholder_escape(), \'%\', $query );
}
相关trac票证为#41925, 它的引入是为了确保SQL中不包含任何可能被sprintf误解为占位符的内容,同时“返回”编号占位符(这些占位符从未得到官方支持,但有效。由于安全问题,它们已被删除)。

结束

相关推荐

WP_QUERY中有多个值:CATEGORY__AND

我希望有人能帮助我,因为我已经搜索了,但找不到答案。。。我正在使用一个快捷码中的循环来显示相关项的列表,并且我很难理解在and参数中选择多个类别的逻辑。例如,我有这样一个类别结构:Products (id: 1) Prod A (id: 2) Prod B (id: 3) Services (id: 4) Service A (id: 5) Service B (id: 6) Overview (id: 7) 我想做的是显示