在PDO语句中转义值

时间:2011-01-04 23:44:51

标签: php pdo prepare

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(),那该怎么办?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

  

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

没有。事实上,PDO根本没有逃避。整点是使用绑定参数,因此,不需要转义任何字符。