Seite 1 von 1

getResultObject & copyResultToArray | geht nicht richtig

Verfasst: Mi 23. Dez 2009, 10:27
von _wiewo_
Hallo Community,

sitze gerade an einem schönem Modul, und könnte super gut die "getResultObject" Funktion des db layers gebrauchen...

mache das so...

Code: Alles auswählen

$db->query($sQuerySelectEvents);
$oResult = $db->getResultObject();
var_dump($oResult);
als ergebnis bekomme ich aber nur
der query an sich der macht alles richtig

----------------------------

mache ich

Code: Alles auswählen

while ($db->next_record())
        {
            $aEvents[] = $db->copyResultToArray();
        }
bekomme ich ein multi array mit genau so vielen einträgen wie er auch wirklich anzeigen sollte
nur leider ist nur das 1. array gefüllt mit den werten der 1. zeile aus der db, der rest ist leer

kann mir da mal jemand auf die sprünge helfen?

-------------------------------

Contenido 4.8.12 - mysqli

Re: getResultObject & copyResultToArray | geht nicht richtig

Verfasst: Fr 25. Dez 2009, 19:21
von xmurrix
Hallo _wiewo_,

Code: Alles auswählen

$db->getResultObject();
liefert den aktuellen Datensatz, auf dem der Zeiger gerade steht, daher müsstest du mindestens einmal next_record() aufrufen.

Beispiel:

Code: Alles auswählen

$db->query($sQuerySelectEvents);
if ($db->next_record()) {
   $oResult = $db->getResultObject();
   var_dump($oResult);
}
Gruß
xmurrix

Re: getResultObject & copyResultToArray | geht nicht richtig

Verfasst: Sa 26. Dez 2009, 16:18
von _wiewo_
also sollte ich meine beiden ansätze oben einfach mal mischen... :)

werde ich montag mal machen

frohe weihnachten allen :)

Re: getResultObject & copyResultToArray | geht nicht richtig

Verfasst: Mo 28. Dez 2009, 08:34
von _wiewo_
Query mit 4 Ergenissen

Code: Alles auswählen

$db->query($sQuerySelectEvents); // Query mit 4 Ergebnissen

        while ($db->next_record())
        {
            $oEvents[] = $db->getResultObject();
        }
        
        var_dump($oEvents);
ergebnis
array
0 => null
1 => null
2 => null
3 => null
*achselzuck* :?: versteh das nicht... hilfe :)

Re: getResultObject & copyResultToArray | geht nicht richtig

Verfasst: Mo 28. Dez 2009, 12:05
von xmurrix
Ok, mein Beispiel war geraten also so nicht richtig, sorry...

Habe mir das etwas näher angesehen, die Verwendung sollte folgendermaßen sein:

Code: Alles auswählen

$db->query($sQuerySelectEvents); // Query mit 4 Ergebnissen
while ($row = $db->getResultObject()) {
    var_dump($row);
}
Nun kommt das "Aber":
Damit es funktioniert, ist eine kleine Anpassung in der conlib/db_mysqli.inc nötig.
In der Zeile 561 wird überprüft, ob die Link_ID und die Query_ID eine gültige Ressource ist. Das ist in in diesem Fall nicht ganz richtig. Bei mysqli ist die Link_ID eine Instanz von "mysqli" und die Query_ID eine Instanz von "mysqli_result".

Ich würde die Zeile 561

Code: Alles auswählen

        if (is_resource($this->Link_ID) && is_resource($this->Query_ID)) {
ändern in

Code: Alles auswählen

        if ($this->Query_ID instanceof mysqli_result) {
Danach funktioniert es wie gewünscht. Sieht also nach einem Bug aus und sollte behoben werden...

Gruß
xmurrix

Re: getResultObject & copyResultToArray | geht nicht richtig

Verfasst: Mo 28. Dez 2009, 12:17
von _wiewo_
ah statt den nächsten record zu laden (next_record) lade ich das ganze result(getResultObject), okay hät man echt drauf kommen können, naja

okay, danke, auch für den tip mit der anpassung und dem anscheinend "bug"