2010-12-02 83 views
1

我正在將一個站點從MySQL轉換爲Postgres,並且有一個非常奇怪的錯誤。此代碼在我切換RDBMS之前按原樣工作。在以下循環中:pg_query()似乎不在循環中執行查詢

foreach ($records as $record) { 
    print "<li> <a href = 'article.php?doc={$record['docid']}'> {$record['title']} </a> by "; 

    // Get list of authors and priorities 
    $authors = queryDB($link, "SELECT userid FROM $authTable WHERE docid='{$record['docid']}' AND role='author' ORDER BY priority"); 

    // Print small version of author list 
    printAuthors($authors, false); 

    // Print (prettily) the status 
    print ' (' . nameStatus($record['status']) . ") </li>\n"; 
    } 

FIRST查詢很好。後續調用不起作用(pg_query在輔助函數中返回false,所以它會死掉)。對於queryDB代碼如下:

function queryDB($link, $query) { 

    $result = pg_query($link, $query) or die("Could not query db! Statement $query failed: " . pg_last_error($link)); 

// Push each result into an array 
    while($line = pg_fetch_assoc($result)) { 
    $retarray[] = $line; 
    } 
    pg_free_result($result); 
    return $retarray; 
} 

真是個奇怪的部分:當我複製的查詢與和psql運行它(作爲PHP與連接相同的用戶),一切都正常運行。或者,如果我將queryDB的肉複製到我的循環中而不是函數調用中,我會得到正確的結果。那麼這個包裝是如何引發錯誤的呢?

謝謝!

+0

運行`pg_last_error()`讓我們知道輸出。 – Woot4Moo 2010-12-02 22:50:36

回答

2

我發現沒有錯誤輸出,因爲我的php.ini配置錯誤;在重新打開錯誤之後,我開始獲得輸出,我得到了諸如18 is not a valid PostgreSQL link resource之類的東西。更改我的連接代碼以使用pg_pconnect()持續版本)修復了此問題。 (找到這個想法here。)

感謝大家誰看了,並試圖幫助!