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!