0

私は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まったく同じことをします。

任意のヒント?

編集:このクエリはデバッグのみを目的としています!クエリ自体は気にしないでください。ただし、バインドされていないメソッドでは気にしないでください。

4

1 に答える 1

3

プリペアドステートメントはそのようには機能しません。バインドできるのは値のみで、エンティティはバインドできません。

ステートメントに関する限り、クエリを実行してSELECT '*' FROM schema.tableますSELECT * FROM schema.table

可変エンティティが必要な場合(これは、約80%の確率で設計上の欠陥を意味します)、文字列補間(または連結-ポイントを取得)に頼る必要があります。

于 2013-03-19T06:25:50.863 に答える