pg_query ничего не возвращает - PullRequest
0 голосов
/ 27 марта 2012

Вопрос новичка о PostgreSQL. Я перевожу созданное мной приложение MySQL / PHP, размещенное на сервере Linux, в PostgreSQL / PHP в среде MacOSX Lion Server. Это мой первый опыт работы с Postgres. Первый запрос, который я тестирую, не работает, поскольку он ничего не возвращает (даже сообщение об ошибке, какой бы проверочный код я не добавил). Что я сделал не так? Я читал статьи в Интернете, в том числе документ на официальном сайте php, но все комментарии, личные методы и различия от версии к версии, как с Postgres, так и с PHP, приводят меня в замешательство, и я в конце концов не понимаю, что именно я должен написать мой запрос и fetch_array. Спасибо за любые предложения.

Вот мой код из исходного приложения MySQL:

// below is the "connexion.php" file
function connexion ()
{
    $link=@mysql_connect ("localhost","username","pwd");
    if ($link && mysql_select_db ("database"))
    return ($link);
    return (FALSE);
}

// below is the "index.php" file
require ("connexion.php");
connexion() or exit();

$reqcount = mysql_query ("SELECT * FROM people");
$result = mysql_num_rows($reqcount);
echo "Total : ".$result." people";
mysql_free_result ($reqcount);

mysql_query("set names 'utf8'");
$reqcat = mysql_query ("SELECT catname FROM categories ORDER BY catname");
while ($fieldcat = mysql_fetch_array($reqcat))
{
$name = $fieldcat[catname];
echo $name."<br>";
}
mysql_free_result ($reqcat);

mysql_close ();

А вот адаптация PostgreSQL:

// connexion.php
function connexion ()
{
    $link=pg_connect("host=localhost port=5432 dbname=database user=username password=pwd connect_timeout=5 options='--client_encoding=UTF8'");
    return ($link);
}

// index.php
require ("connexion.php");

$reqcount = pg_query ($link,"SELECT * FROM people");
$result = pg_num_rows($reqcount);
echo "Total : ".$result." people";
pg_free_result ($reqcount);

$reqcat = pg_query ($link,"SELECT catname FROM categories ORDER BY catname");
while ($fieldcat = pg_fetch_array($reqcat))
{
$name = $fieldcat[catname];
echo $name."<br>";
}
pg_free_result ($reqcat);

pg_close ();

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

PHP-код для postgresql не вызывает connectxion (), поэтому он никогда не соединяется, в отличие от кода mysql.

0 голосов
/ 27 марта 2012

Вы можете попробовать свой запрос, если он не отобразится.1010 * ОБНОВЛЕНИЕ:

Удалите @ в вашем соединении, чтобы увидеть ошибку, и добавьте or die(pg_last_error()), чтобы увидеть ошибку

...