将包含单引号的文本插入 PostgreSQL 数据库需要小心处理,以避免语法错误和 SQL 注入等安全漏洞。 本指南概述了安全有效的方法。
最简单的方法是在字符串中加倍单引号。 例如,要插入“用户日志”,请使用以下查询:
<code class="language-sql">INSERT INTO test VALUES (1, 'user''s log');</code>
虽然可以使用反斜杠 () 进行转义,但不太受欢迎,应保留在双引号不可行的情况下。
对于复杂的字符串或带有嵌套引号的情况,PostgreSQL 的美元引号字符串提供了卓越的解决方案。 这些字符串包含在 $$
中,可以更轻松地处理特殊字符,包括美元符号本身(如果存在,则需要转义)。
<code class="language-sql">$$escape ' with ''$$</code>
PostgreSQL 提供 quote_literal()
、quote_nullable()
和 format()
(带有 %L
说明符)等函数来自动为 SQL 查询生成正确引用的字符串,消除手动转义并降低错误风险。
<code class="language-sql">format('%L', string_var)</code>
至关重要的是,这些字符串转义技术不能替代准备好的语句或参数化查询。 这些方法将数据与 SQL 命令本身分离,是防止 SQL 注入攻击的最有效方法。 始终优先考虑准备好的语句以确保安全的数据库交互。
以上是如何安全地将带单引号的文本插入 PostgreSQL 数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!