PDO不绑定PostgreSQL查询

时间:2013-03-19 06:23:54

标签: php postgresql pdo prepared-statement

我正在使用PDO开发PostgreSQL应用程序。 问题是PDOStatement::bindValuePDOStatement::bindParam的绑定功能根本不起作用。

我有以下代码:

<?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完全相同。

任何提示?

编辑:此查询仅用于调试目的!请不要关心查询本身,而是关注不绑定的方法。

1 个答案:

答案 0 :(得分:3)

准备好的陈述不能像那样工作。您只能绑定值,而不能绑定实体。

就您的陈述而言,您正在执行查询SELECT '*' FROM schema.tableSELECT * FROM schema.table

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