Я конвертирую сайт из MySQL в Postgres и у меня действительно странная ошибка. Этот код работал как есть до того, как я переключил СУБД. В следующем цикле:
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";
}
Первый запрос в порядке. Последующие вызовы не работают (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 в свой цикл вместо вызова функции, я получу правильный результат. Так как же эта оболочка вызывает ошибки?
Спасибо!