【问题标题】:PDO - $_POST arrayPDO - $_POST 数组
【发布时间】:2013-09-04 16:45:55
【问题描述】:

我想知道是否需要在 PDO 中转义 $_POST 和/或 $_GET 数组? (面向对象)

例子:

<?php $name = $_POST['name']; ?>

我应该怎么做才能防止“SQL 注入”?谢谢。

【问题讨论】:

标签: php pdo http-post http-get


【解决方案1】:

双号

  • 你不应该逃跑。
  • 您根本不应该特别注意 $_POST 或 $_GET 变量。

如何防止“SQL注入”

  1. 您必须使用准备好的语句,而不是转义
  2. 重要的是数据目的地,而不是来源。

进入 SQL 查询的每个变量都只能通过占位符添加,无论它来自 POST、GET 还是 ATM 电汇。

【讨论】:

    【解决方案2】:

    如果你使用 pdo,你可以使用 prepare 语句

    这里有很好的例子:

    http://php.net/manual/en/pdo.prepare.php

    PDO 会在查询之前为您转义值(使用 prepare 语句),因此您不必担心。

    【讨论】:

      【解决方案3】:

      您应该使用准备好的语句。 PDO 不仅为您转义了这些值,而且还使查询字符串看起来更好看,并且更便于以后的维护。

      $sql = 'SELECT * FROM users WHERE id=?';
      $dbh->execute(array("@p1", $_GET['blah']));
      

      当我需要 PDO 方面的帮助时,我会使用哈希 PHP,它们更容易理解。

      http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

      【讨论】:

        猜你喜欢
        • 2017-11-05
        • 2016-02-02
        • 2016-08-18
        • 2015-02-26
        • 2015-04-30
        • 2013-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多