wordpress - 寻求有关转义(斜杠)在 wpdb 中的工作原理和最佳实践的说明

我刚修复了一些代码的输出,使用 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 中查看它)

最佳答案

来自法典:

Both $data columns and $data values should be "raw" (neither should be SQL escaped). This means that if you are using GET or POST data you may need to use striplashes() to avoid slashes ending up in the database.

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

https://stackoverflow.com/questions/17690265/

相关文章:

scikit-learn - 在传递到 'roc_curve' 之前如何处理从 'auc' 返回的

ruby-on-rails - 如何在到达 Rails 应用程序之前处理从 Rack 生成的异常

css - 使用 CSS 的 SVG 路径填充颜色

spring - 如何为持久性 Quartz 作业重命名作业类?

python - 永远不会创建文件

sql-server - SQL Server 2008 的 FreeTextTable 性能不佳

unicode - 如何处理 SDL 中的大写击键?

ruby-on-rails - 在超时注销之前向用户显示一条消息

proxy - 无法从远程机器访问鱿鱼代理

java - Java 字节码中的平台独立性