3

我刚刚修复了一些代码的输出,以使用wpdb函数从存储在数据库中和从数据库中检索的字符串中删除斜杠。然后我希望必须在我的代码的另一部分中解决相同的问题,其中字符串存储在数据库中并从数据库中检索,但注意到没有添加斜杠,所以我对何时自动添加斜杠有点困惑。以下是我遇到的这两个案例的观察结果:

案例 1 - 我需要在输出中去除斜线

  1. $_POST数据自动用斜杠转义
  2. 通过使用$wpdb->insert$wpdb->update数据结束数据库中的斜杠
  3. $wpdb->get_row$wpdb->get_results斜线检索的数据
  4. 我使用stripslashes 来解决这个问题

案例 2 - 我不需要在输出中去除斜线

  1. $_POST数据自动用斜杠转义
  2. 用于$wpdb->query插入和更新数据最终在数据库中没有斜杠
  3. 使用斜线检索的数据$wpdb->get_row$wpdb->get_results没有斜线
  4. 无需在输出时去除斜线

我的问题是:

  • 为什么这两种情况下的行为不同?
  • wpdb使用函数时处理转义的最佳做法是什么?
  • 如果字符串包含单引号,是否应该在数据库中转义该引号?(即如果您在 PHPMyAdmin 中查看它)
4

1 回答 1

0

来自法典:

$data 列和 $data 值都应该是“原始的”(都不应该是 SQL 转义的)。这意味着如果您使用 GET 或 POST 数据,您可能需要使用 striplashes() 来避免斜杠最终出现在数据库中。

您可能还想看看这个部分:http ://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks

于 2013-07-30T17:41:14.527 回答