Hallo!
Würde trotzdem gerne mit den Cursorn rumspielen, rein interessehalber. Wo liegt denn mein Fehler?
Sollst Du auch, ich möchte Dich gar nicht dran hindern.
Wo liegt denn mein Fehler?
  
// getestet!!!  
  
$conn = pg_connect("host=servername dbname=datenbankname user=username password=passwort");  
  
// Hier habe ich Dein SQL-Statement rein kopiert.  
// Sollte es nun immer noch nicht funktionieren,  
// liegt es an Deinem SQL-Statement.  
$dbQuery = "SELECT * FROM log_entries WHERE request_time BETWEEN " . $t1 . " AND " . $t2 . " ORDER BY request_time DESC LIMIT 3;";  
  
$r = pg_query($conn, 'BEGIN;');  
$r = pg_query($conn, 'DECLARE getRecords CURSOR FOR '. $dbQuery);  
  
for ($i=1; $i < 10; $i++) {  
  echo (10*$i);  
  $r  = pg_query($conn, "FETCH " . (10*$i) . " FROM getRecords;");  
  $row = pg_fetch_all($r);  
  print_r($row);  
}  
$r = pg_query('CLOSE getRecords;');  
$r = pg_query('COMMIT;');  
for ($i=0; $i< $nOfRecords; $i++) {
$r = pg_query($conn, "FETCH getRecords;");Hier steht natürlich noch:
$row = pg_fetch_array($r);
Ist mir gar nicht aufgefallen das es fehlt.
Das LIMIT 3 ist übrigens auch nur zu Testzwecken!
Kannst Du bei CURSOR auch verwenden.
Hier noch mal als Beispiel:
-> Ich arbeite hauptsächlich mit ADOdb (Doku)
-> bei mir läuft noch PostgreSQL 7
  
$db->BeginTrans();  
  
$sql = "DECLARE test CURSOR FOR SELECT id, titel FROM archiv ORDER BY arc_id LIMIT 500";  
$db->Execute($sql);  
  
$rs = $db->Execute('FETCH 10 FROM test');  
$row = $rs->GetArray();  
print_r($row);  
  
$rs = $db->Execute('FETCH 20 FROM test');  
$row = $rs->GetArray();  
print_r($row);  
  
$rs = $db->Execute('MOVE 300 IN test');  
  
$rs = $db->Execute('FETCH 20 FROM test');  
$row = $rs->GetArray();  
print_r($row);  
  
$db->Execute('CLOSE test');  
  
$db->CommitTrans();  
André Laugks
-- 
Die Frau geht, die Hilti bleibt!
  Die Frau geht, die Hilti bleibt!
 nicht angemeldet
 nicht angemeldet