【问题标题】:Escapeing values in PDO statementsPDO 语句中的转义值
【发布时间】:2011-01-04 23:44:51
【问题描述】:

prepare() 不会在 PDO 语句中转义任何 quotes(') 吗?出于某种原因,当我这样做时:

$sql = "INSERT INTO sessions (id, name) VALUES (1,'O'brian')";
$query = $this->connection->prepare($sql);
$query->execute();

我收到此错误:

Could not insert record SQLSTATE[42000]: [Microsoft][SQL Server Native Client 10.0][SQL Server]Incorrect syntax near 'brian'.

如果我使用的是prepare(),怎么会这样?

【问题讨论】:

    标签: php pdo prepare


    【解决方案1】:

    由于您没有在 execute 方法中传递值,因此不会自动为您转义。将为您转义以下内容:

    $sql = "INSERT INTO sessions (id, name) VALUES (1, ?)";
    $query = $this->connection->prepare($sql);
    $query->execute(array("O'brian"));
    

    【讨论】:

    • 欢迎准备好的陈述。这是要走的路。
    【解决方案2】:

    不准备()转义任何引号(') 在 PDO 语句中?

    没有。事实上,PDO 根本没有进行转义。重点是使用绑定参数,因此,没有字符需要转义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-05
      • 2022-01-19
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 2015-06-27
      相关资源
      最近更新 更多