【问题标题】:Single Quotes in PHP Postgres PDOPHP Postgres PDO 中的单引号
【发布时间】:2017-12-21 03:43:41
【问题描述】:

我在 PHP 中使用 PDO 类来运行 PostgreSQL 查询。

$conn = new PDO("pgsql:host=$dbhost;port=$dbport;dbname=$dbname;user=$dbuser;password=$dbpass");
$query = 'SELECT "ID", "Description" FROM "MyTable"';
$result = $conn->query($query);

假设查询中的某些内容需要用单引号括起来,例如

$query = 'SELECT "ID", "Description" FROM "MyTable" WHERE "Description" = 'A107'';

这不会像现在这样工作。但是,如果我执行以下操作,它将起作用。

$query = 'SELECT "ID", "Description" FROM "MyTable" WHERE "Description" = ' . $conn->quote('A107', PDO::PARAM_STR);

我知道使用 PDO 的准备和执行有更好的方法来做到这一点。该代码本质上是模板的一部分,我的一位同事(编程经验有限)希望将 PostgreSQL 查询粘贴到该模板中。

因此,我正在寻找在这种情况下处理单引号的最简单方法。查询可能比我给出的示例更复杂,我不希望他们过多地弄乱模板。类似于转义的东西会很好,但还没有找到这样的东西。我知道他们有必要进行一些修改,但希望尽量减少。

【问题讨论】:

  • 你可以转义单引号 - 使用\'

标签: php sql postgresql pdo


【解决方案1】:

如果您想将任何查询粘贴到 php 代码中而不用担心代码本身的转义,您可以使用“heredoc”或“nowdoc”。见php strings documentation

它在字符串前后使用唯一的标签来标识开始和结束。请注意,结束标识符必须在行首。

$query = <<<'a_unique_string'
select * from foo where bar = 'baz'
a_unique_string;

【讨论】:

    猜你喜欢
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 2013-05-13
    • 2016-09-14
    • 2013-07-10
    相关资源
    最近更新 更多