我正在使用 PDO 开发带有 PostgreSQL 的应用程序。
问题是作为 PDOStatement::bindValue
和 PDOStatement::bindParam
的绑定(bind)函数根本不起作用。
我有以下代码:
<?php
try{
$db = new PDO("pgsql:dbname=test;host=localhost", "user", "password");
$all = '*';
$sql = $db->prepare("SELECT :all FROM schema.table");
$sql->bindValue(':all', $all);
var_dump($sql->queryString);
var_dump($sql->execute());
}
catch(PDOException $e){
print $e->getMessage();
}
?>
我无法理解为什么 $sql->queryString
的值仍然是 SELECT :all FROM schema.table
,因为它 var_dump()
在这里。
PDOStatement::bindParam
做同样的事情。
有什么建议吗?
编辑:此查询仅用于调试目的!请不要关心查询本身,而是关心未绑定(bind)的方法。
最佳答案
准备好的语句不是那样工作的。您只能绑定(bind)值,不能绑定(bind)实体。
就您的语句而言,您正在执行查询 SELECT '*' FROM schema.table
,Not,SELECT * FROM schema。表格
如果您想要可变实体(这意味着大约 80% 的时间存在设计缺陷),您将不得不求助于字符串插值(或连接 - 您明白了)。
关于php - PDO 没有绑定(bind) PostgreSQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15492809/