2012-09-09 148 views
1

我想讓我的postgresql工作。我以前使用過sql,但從來沒有postgres。用PostgreSQL和PHP獲取查詢結果

我覺得下面應該顯示的輸出,一個漂亮的表。

我測試過PHP在幾個地方,它似乎是結果變量是沒有得到任何東西回來,所以是假值布爾值,所以沒有什麼retreived。如果有人能幫我找到這個錯誤,我會很感激。

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>'; 

再次,它編譯和運行,但似乎$行查詢後回來爲假,所以循環沒有運行打印出來的結果,因爲它有沒有。

謝謝!

+0

您錯過了'echo'後的結尾'

;這只是在SO還是在你的代碼中? –

回答

0

不能使用佔位符的識別符(即,表或列名稱),以便此:

select * from $1 

將不起作用。如果你想在表名是一個變量,我想你堅持用繩子插值:

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

你要使用pg_escape_identifier以避免奇怪的價值觀問題$queryType但請記住,pg_escape_identifier會雙引號標識符,這可能會給你區分大小寫的問題。

您的問題中還有兩個缺失的單引號:一個在echo'<table>;和另一個在. $row['id] .,但這些大概只是在您的問題文本中,因爲您說代碼編譯和運行。