PHP Postgres PDO中的单引号

时间:2017-07-16 15:08:41

标签: php sql postgresql pdo

我正在使用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查询粘贴到其中。

因此,在这种情况下,我正在寻找处理单引号的最简单方法。查询可能比我给出的示例更复杂,我不希望他们过多地使用模板。逃避的事情会很好,但是没有找到类似的东西。我意识到他们需要进行一些修改,但我希望尽量减少这一点。

1 个答案:

答案 0 :(得分:0)

如果要将任何查询粘贴到php代码中而不考虑转义代码本身,可以使用'heredoc'或'nowdoc'。请参阅php strings documentation

它使用字符串前后的唯一标记来标识开始和结束。请注意,结束标识符必须位于行的开头。

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