PDO 语句中的转义值

发布于 2024-10-10 20:12:47 字数 458 浏览 8 评论 0原文

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() ,这怎么可能?

Doesn't prepare() escape any quotes(') in a PDO statement ? For some reason when I do this:

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

I get this error:

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

How could this be if I'm using prepare() ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

人疚 2024-10-17 20:12:47

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

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

Since you are not passing the value in the execute method, it will not be automatically escaped for you. The following would be escaped for you:

$sql = "INSERT INTO sessions (id, name) VALUES (1, ?)";
$query = $this->connection->prepare($sql);
$query->execute(array("O'brian"));
凡间太子 2024-10-17 20:12:47

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

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

Doesn't prepare() escape any quotes(')
in a PDO statement?

No. In fact, there is no escaping being done by PDO at all. The whole point is to use bound parameters, therefore, no characters need to be escaped.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文