使用PostgreSQL和PHP获取查询结果

时间:2012-09-09 20:54:26

标签: php sql database postgresql

我正在努力让我的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,因此循环不会运行以打印出结果,因为它没有。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

select * from $1

不起作用。如果你想让表名变成一个变量,我认为你已经陷入了字符串插值:

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

您需要使用pg_escape_identifier来避免$queryType中出现奇怪值的问题,但请记住pg_escape_identifier会引用标识符,这可能会导致区分大小写问题。

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