php - PDO 没有绑定(bind) PostgreSQL 查询

标签 php postgresql pdo prepared-statement

我正在使用 PDO 开发带有 PostgreSQL 的应用程序。 问题是作为 PDOStatement::bindValuePDOStatement::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.tableNotSELECT * FROM schema。表格

如果您想要可变实体(这意味着大约 80% 的时间存在设计缺陷),您将不得不求助于字符串插值(或连接 - 您明白了)。

关于php - PDO 没有绑定(bind) PostgreSQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15492809/

相关文章:

php - 使用外键插入 PDO 失败

PHP PDO 事务回滚不起作用

PHP PDO 强制 SQL99

php - Woocommerce "My Account" "Address Field"显示

php - 在php中显示两个值

java - Hibernate事务异常: nested transactions not supported

postgresql - Postgres jsonb 数组 : query for non-empty intersection

postgresql - 连接两列并用 postgresql 中的结果替换其中一列

php - SQL:如果字段具有高度和经度值则选择

php - 如何在 PHP 中测试连通性?