esc_sql()

SQL查询字符串处理

描述

准备用作 SQL 查询的字符串。这个函数是一个美化的addslashes(),它适用于数组。

在 99% 的情况下,您可以使用 $wpdb->prepare() 代替,这是推荐的方法。此函数仅适用于无法轻松使用 $wpdb->prepare() 的极少数情况。

注意:请小心正确使用此功能。它只会转义要在查询中的字符串中使用的值。也就是说,它只为将在 SQL 中的引号内的值提供转义(如字段 = '{$escaped_value}')。如果你的值不在引号内,你的代码仍然容易受到SQL注入的影响。例如,这很脆弱,因为在 SQL 查询中,转义的值没有用引号括起来:ORDER BY {$escaped_value}。因此,此函数不会转义不带引号的数值、字段名称或 SQL 关键字。

用法

 <?php esc_sql( $sql ); ?> 

参数

$data

(string|array) (必填) 一条转义的 SQL 查询语句。

默认值: None

返回值

(string)

转义之后适合 SQL 查询中使用的字符串。

示例

SQL 转义还是建议首选 $wpdb->prepare(),因为它可以修正一些格式方面的错误。

注意

通常首选 $wpdb->prepare(),因为它纠正了一些常见的格式错误。

此函数以前只是 $wpdb->escape() 的别名,但现在该函数已被弃用。

应该注意的是,此函数只会转义要在查询中的字符串中使用的值,如上面的示例所示。也就是说,它只为引号内的值提供转义(如字段 = '{$escaped_value}')。如果你的值不在引号内,你的代码仍然容易受到SQL注入的影响。例如,这很脆弱,因为在 SQL 查询中,转义的值没有用引号括起来:ORDER BY {$escaped_value}。

历史

添加于 版本: 2.8.0

源文件

esc_sql() 函数的代码位于 wp-includes/formatting.php.

/**
* Escapes data for use in a MySQL query.
*
* Usually you should prepare queries using wpdb::prepare().
* Sometimes, spot-escaping is required or useful. One example
* is preparing an array for use in an IN clause.
*
* @since 2.8.0
*
* @global wpdb $wpdb
*
* @param string|array $data Unescaped data
* @return string|array Escaped data
*/

function esc_sql( $data ) {

global $wpdb;

return $wpdb->_escape( $data );

}
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索