1

postgresqlを機能させようとしています。私は以前にSQLを使用したことがありますが、postgresは使用していません。

以下は、出力の素晴らしい表を表示するはずだと思います。

私はいくつかの場所でphpをテストしましたが、結果変数は何も返されないようです。また、false値のブール値であるため、何も取得されません。誰かが私がエラーを見つけるのを手伝ってくれるなら、私は感謝するでしょう。

if($queryType != NULL)

    echo'<table>;
    if($limit == NULL && $offset == NULL)
    {
    $query = 'SELECT * FROM $1';
    $stmt = pg_prepare($connection, "limitoffset", $query);
    $result = pg_execute($connection, "limitoffset", array($queryType));

    if($queryType == 'city'){
    while($row = pg_fetch_assoc($result)){
    echo '<tr>'; 
    echo '<td>' . $row['id] . '</td>';
    echo '</tr>';
    }
 echo '</table>';

繰り返しになりますが、コンパイルして実行しますが、クエリ後に$ rowがfalseとして返されるようです。そのため、ループが実行されていないため、結果を出力するためのループが実行されていません。

ありがとう!

4

1 に答える 1

0

識別子(つまり、テーブル名または列名)にプレースホルダーを使用することはできないため、次のようになります。

select * from $1

動作しません。テーブル名を変数にしたい場合は、文字列補間で立ち往生していると思います。

$table = pg_escape_identifier($queryType);
$query = "SELECT * FROM $table";

pg_escape_identifierの奇妙な値の問題を回避するために使用することをお勧めしますが、識別子を二重引用符で囲み、大文字と小文字の区別の問題が発生する可能性があることに$queryType注意してください。pg_escape_identifier

また、質問には2つの一重引用符がありません。1つはinでecho'<table>;、もう1つはin. $row['id] .ですが、コードがコンパイルされて実行されると言っているので、おそらく質問テキストに含まれています。

于 2012-09-09T21:22:44.903 に答える