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 在查询后返回为假,因此循环没有运行以打印结果,因为它没有。

谢谢!

4

1 回答 1

0

您不能使用占位符作为标识符(即表或列名),因此:

select * from $1

不会工作。如果您希望表名成为变量,我认为您会遇到字符串插值:

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

您将希望使用它pg_escape_identifier来避免出现奇怪值的问题,$queryType但请记住,这pg_escape_identifier将给标识符加上双引号,这可能会给您带来区分大小写的问题。

您的问题中还缺少两个单引号:一个 inecho'<table>;和另一个 in. $row['id] .但这些可能只是在您的问题文本中,因为您说代码可以编译和运行。

于 2012-09-09T21:22:44.903 回答