如果您查看source 对于$wpdb->insert( $table, $data, $format)
方法可以找到以下注释:
要插入的数据(列=>值对)。$数据列和$数据值都应为“原始”(都不应为SQL转义)。
因此,您不需要自己对数据执行SQL转义。
据我所知,插入到$wpdb->insert()
方法,通过:
在$wpdb->prepare()
方法,使用$wpdb->escape_by_ref()
, 使用$wpdb->_real_escape()
, 对于非浮动值:! is_float( $string )
, 使用PHP包装器的mysql_real_escape_string()
或mysqli_real_escape_string()
对于WP 3.9+和PHP 5.5+来自PHP docs 在mysql_real_escape_string()
功能:
转义unescaped\\u字符串中的特殊字符,同时考虑连接的当前字符集,以便安全地将其放置在mysql\\u查询()中。如果要插入二进制数据,则必须使用此函数。mysql\\u real\\u escape\\u string()调用mysql的库函数mysql\\u real\\u escape\\u string,它将反斜杠前置到以下字符:\\x00、\\n、\\r、\\、\'、“”和\\x1a。在向mysql发送查询之前,必须始终使用此函数(除少数例外)来确保数据安全。
但正如您提到的Codex页面所述,在PHP的旧版本中addslashes
可自动应用于$_POST
, $_GET
和$_REQUEST
全局。这个Magic Quotes feature 在PHP 5.3中被弃用,在5.4中被删除。