[PHP/PDO] Resultset lijkt onverwacht leeg*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 02:04

aex351

I am the one

Topicstarter
Ik weet momenteel niet waarom resultaten 2 en 3 geen resultaten van de gemaakte query tonen. Zou iemand hier kunnen uitleggen waarom bij 2 de query resultaten die in $results zijn opgeslagen verdwenen zijn. Ik neem aan dat PHP niet automatisch query op null zet oid. 3 : kan waarschijnlijk worden verklaard dat php elke object als referentie automatisch meegeeft ipv een clone.

Zoekmachines zowel op google als op het wereld wijde web hebben niets opgeleverd.

PHP:
1
2
3
4
5
6
7
8
    $results = $dbh->query($mysql);
    $results1 = $results;
    //1: weergeeft resultaten
    var_dump($results->fetchAll());
    //2: weergeeft geenresultaten
    var_dump($results->fetchAll());
    //3 :weergeeft geen resultaten
    var_dump($results1->fetchAll());

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Zover ik weet kan je de PDO code niet zien, en in de documentatie wordt niets gezegd over het meermaals uitvoeren van fetchAll. Ik denk dus niet dat wij dat kunnen weten, maar het is best mogelijk dat het object geleegd wordt :) .

FetchAll is echter een methode die de database aanspreekt, niet een variabele. Waarom zou je dus in vredesnaam die methode meerdere malen willen uitvoeren :) ? Dat lijkt me eerlijkgezegd niet echt performant / zinnig.

edit:
Bij een 'fatsoenlijke' database accessor zou zoiets waarschijnlijk gecached worden en zou je het gewoon meerdere malen moeten kunnen aanroepen, maar het is niet voor niets een "lightweight" class :) .

[ Voor 20% gewijzigd door JHS op 27-05-2006 10:24 ]

DM!


Acties:
  • 0 Henk 'm!

  • DJ Buzzz
  • Registratie: December 2000
  • Laatst online: 19-09 08:24
Ik zou als ik jou was even wat lezen over het gebruik van cursors in PDO. Dan zul je o.a. dit tegenkomen (http://www.php.net/pdo):

PDO::CURSOR_FWDONLY (integer)
Create a PDOStatement object with a forward-only cursor. This is the default cursor choice, as it is the fastest and most common data access pattern in PHP.

Oftewel, je cursor is bij een fetchAll helemaal aan het eind beland en je result set zal dus bij een volgende call een lege array opleveren.

Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

De truc is dus om één keer $data = $results->fetchAll(); te doen en daarna $data te gebruiken.

Rustacean


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Of de cursor rewinden, maar dat kan dus niet met een FWDONLY-cursor.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Titelfix. aex351, wil je in het vervolg een beetje op je topictitels letten? Ik heb tot nu toe in praktisch elk van je topics hier een meer of minder subtiele titelfix moeten toepassen, en om heel eerlijk te zijn word ik daar een beetje moe van. Lees *** Over topictitels in PRG - lezen voor topic openen!!! *** even door.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1