getResultObject & copyResultToArray | geht nicht richtig

Gesperrt
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

getResultObject & copyResultToArray | geht nicht richtig

Beitrag 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
xmurrix
Beiträge: 3217
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 19 Mal
Kontaktdaten:

Re: getResultObject & copyResultToArray | geht nicht richtig

Beitrag 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
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Re: getResultObject & copyResultToArray | geht nicht richtig

Beitrag von _wiewo_ »

also sollte ich meine beiden ansätze oben einfach mal mischen... :)

werde ich montag mal machen

frohe weihnachten allen :)
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Re: getResultObject & copyResultToArray | geht nicht richtig

Beitrag 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 :)
xmurrix
Beiträge: 3217
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 19 Mal
Kontaktdaten:

Re: getResultObject & copyResultToArray | geht nicht richtig

Beitrag 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
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Re: getResultObject & copyResultToArray | geht nicht richtig

Beitrag 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"
Gesperrt