我正在尝试显示数据库中的数据。该数据是通过类似bellow的esc\\u sql转义的。
但当我在echo
, 换行符打印为字符(“\\”、“r”、“\\”、“n”)。
$data = esc_sql("
sample data with line returns
");
echo $data; // Output = \\r\\n sample data with line returns\\r\\n
执行esc\\u sql后,重新应用行返回的最佳方法是什么?
最合适的回答,由SO网友:Tom J Nowell 整理而成
那不是什么esc_sql
是用于或应该用于什么。
安全地转义SQL查询中的变量要使变量对SQL查询安全,请使用$wpdb->prepare
, e、 g。
$table_name = "{$wpdb->prefix}myTable";
$myID = 12;
$wpdb->query(
$wpdb->prepare(
"UPDATE `$table_name` SET `your_column_1` = 1 WHERE `$table_name`.`your_column_id` = %d",
$myID
)
);
请注意
$myID
使用安全地插入到SQL查询中
$wpdb->prepare
, 并且不直接包含在查询字符串中。
esc_sql
此处不使用。
安全地转义查询结果
要在输出时转义从数据库检索到的数据,请使用与所显示的上下文匹配的函数
esc_html
对于非HTML文本esc_attr
对于HTML标记属性esc_url
对于URLwp_kses_post
对于贴子内容中允许使用标签的内容,我应该何时使用esc_sql
?非常、非常、很少:通常应该使用wpdb::prepare()准备查询。有时,需要或有用点转义。一个示例是准备在in子句中使用的数组。
和
正确使用此功能时要小心。它将仅转义要在查询中的字符串中使用的值。也就是说,它只为SQL中引号内的值提供转义(如字段=“{$escaped\\u value}”)。如果您的值不在引号内,那么您的代码仍然容易受到SQL注入的攻击。例如,这很容易受到攻击,因为在SQL查询中,转义值没有被引号括起来:ORDER by{$escape\\u value}。因此,此函数不会转义无引号的数值、字段名或SQL关键字。
https://developer.wordpress.org/reference/functions/esc_sql/
大多数WP开发人员永远不会使用或遇到esc_sql
这是一件好事。