pg_query returns nothing

雨燕双飞 提交于 2019-12-11 23:47:57

问题


Newbie question about PostgreSQL. I'm migrating a MySQL/PHP app I've created, hosted on a Linux server, to PostgreSQL/PHP on a MacOSX Lion Server environment. It's my first experience with Postgres. The first query I'm testing doesn't work as it returns nothing (not even an error message, whichever check code I add). What did I do wrong? I've read articles on the web including the doc on php official website but all comments, personal methods and differences from version to version, either with Postgres or PHP, make it very confusing and I eventually don't understand exactly show I should write my query and fetch_array. Thanks for any suggestions.

Here is my code from the original MySQL application:

// 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 ();

And here is the PostgreSQL adaptation:

// 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 ();

回答1:


The php code for postgresql doesn't call connexion() so it never connects, unlike the mysql code.




回答2:


You can try your query if it fails display error

$reqcount = pg_query ($link,"SELECT catname FROM people") or die(pg_last_error());

This way you can see your error.

errors

UPDATE:

Remove the @ in your connection to see the error, and add or die(pg_last_error()) to see the error



来源:https://stackoverflow.com/questions/9880830/pg-query-returns-nothing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!