0

我正在使用 PDO 使用 PostgreSQL 开发应用程序。问题是绑定起作用PDOStatement::bindValue并且PDOStatement::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做同样的事情。

有小费吗?

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

4

1 回答 1

3

准备好的语句不是那样工作的。您只能绑定值,不能绑定实体。

就您的陈述而言,您正在执行 query SELECT '*' FROM schema.tableNotSELECT * FROM schema.table

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

于 2013-03-19T06:25:50.863 回答