Verbindung über PHP PDO

Hallo,

die Verbindung zu meiner PG Datenbank von PHP aus funktioniert problemlos bei Verwendung des pgSQL Interfaces. Bis jetzt ist es mir aber leider nicht gelungen mich über PDO mit der Datenbank zu verbinden.

hier die beiden verwendeten connection strings:
1) natives Interface:
[php]
$dbconn = pg_connect(“host=localhost dbname=xxx user=yyy password=zzz”) or die('Verbindungsaufbau fehlgeschlagen: ’ . pg_last_error());
// Eine SQL-Abfrge ausführen
$query = ‘SELECT “AnzeigenAls” FROM kontakte.“Partner” ORDER BY “AnzeigenAls”’;
[/php]
==> dies funtioniert

2) PDO Interface
[php]
try {
$dbh = new PDO(‘pgsql:host=localhost dbname=xxx’, ‘yyy’, ‘zzz’);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "
";
die();
}
for each ($dbh->query(“SELECT “AnzeigenAls” FROM kontakte.“Partner””) as $row)
{
print “

”;
[/php]
==> bringt einen HTTP 500 error
=> habe alle Varianten den connection string aufzubauen ausprobiert (mit Semikolons anstatt Leerzeichen, mit User im ersten Parameter, …) hat aber alles nicht funktioniert.

PHPinfo gibt aus, dass alle erforderlichen Module von Apache erflogreich geladen wurden

PDO

PDO supportenabledPDO drivers mysql, pgsql

pdo_pgsql

PDO Driver for PostgreSQLenabledPostgreSQL(libpq) Version 8.2.3 Module version 1.0.2 Revision $Id: pdo_pgsql.c,v 1.7.2.11.2.1 2007/01/01 09:36:05 sebastian Exp $

pgsql

PostgreSQL SupportenabledPostgreSQL(libpq) Version 8.2.3 Multibyte character support enabled SSL support disabled Active Persistent Links 0 Active Links 0
DirectiveLocal ValueMaster Valuepgsql.allow_persistentOnOnpgsql.auto_reset_persistentOffOffpgsql.ignore_noticeOffOffpgsql.log_noticeOffOffpgsql.max_linksUnlimitedUnlimitedpgsql.max_persistentUnlimitedUnlimited

Danke

Was steht im error Log von PHP und vom Webserver?
Was passiert, wenn du das Debugging anschaltest, in PHP z.B. mit error_reporting auf E_ALL?

Danke für den Hinweis mit dem Error Log. Der Fehler lag in dem ‘for each’ anstelle ‘foreach’ und nicht am Datenbankinterface. Jetzt funktioniert es.

Es kann so einfach sein :wink:

Dein error_reporting muss aber komplett ausgeschaltet gewesen sein, wenn PHP nicht sofort einen Parse Fehler gebracht hat, oder?