2012-03-26 17 views
0

Neue Frage zu PostgreSQL. Ich migriere eine MySQL/PHP-Anwendung, die ich auf einem Linux-Server erstellt habe, auf PostgreSQL/PHP in einer MacOSX Lion Server-Umgebung. Es ist meine erste Erfahrung mit Postgres. Die erste Abfrage, die ich teste, funktioniert nicht, da sie nichts zurückgibt (nicht einmal eine Fehlermeldung, je nachdem, welchen Prüfcode ich hinzufüge). Was habe ich falsch gemacht? Ich habe Artikel im Web einschließlich des Dokuments auf der offiziellen Website von PHP gelesen, aber alle Kommentare, persönliche Methoden und Unterschiede von Version zu Version, entweder mit Postgres oder PHP, machen es sehr verwirrend und ich verstehe schließlich nicht genau, dass ich zeigen sollte meine Abfrage und fetch_array. Danke für Anregungen.pg_query gibt nichts zurück

Hier ist mein Code aus der ursprünglichen Anwendung MySQL:

// below is the "connexion.php" file 
function connexion() 
{ 
    [email protected]_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(); 

Und hier ist die PostgreSQL Anpassung:

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

Während Sie migrieren, warum nicht PDO verwenden, während Sie gerade dabei sind? Und bitte löschen Sie die Gewohnheit oder unterdrücken Fehler mit '@'. – PeeHaa

+0

Zeitmangel, ich versuche so wenig wie möglich zu modifizieren, daher nur die Frage. Danke für den Hinweis zu @. –

Antwort

2

Der PHP-Code für postgresql zu sehen, nicht connexion nennen() so verbindet es nie, anders als der mysql-code.

0

können Sie Ihre Anfrage versuchen, wenn es Anzeigefehler nicht

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

Auf diese Weise können Sie Ihren Fehler sehen.

errors

UPDATE:

Entfernen Sie die @ in Ihrer Verbindung um den Fehler zu sehen, und fügen Sie or die(pg_last_error()) den Fehler