Datenbank Spalten header als array keys bei $oDb->getAll()


#1

Hi,

ich bin gerade dabei eines unserer älteren module zu debuggen, das noch aus Oxid 4.x Zeiten stammt.
Dieses erwartet das bei der Datenbankabfrage ein array zurück gegeben wird, welches die Spalten header der abgefragten Tabelle als array keys abspeichert.

Script:

$sCatSelect = "SELECT * FROM oxcategories";
        $aCategories = $oDb->getAll($sCatSelect);
       
        foreach( $aCategories as $aRow )
        { $query =  "REPLACE INTO oxcategories (" . join(",",array_keys($aRow)) . ") VALUES "
                         . "(" ;
            foreach($aRow as $sKey => $sValue) {

Datensatz:

array(40) {
  [0]=>
  string(32) "068c58b2744ab0cf73eab1c590a724d7"
  [1]=>
  string(8) "oxrootid"
  [2]=>
  string(1) "1"
  [3]=>
  string(1) "2"
  [4]=>

Erwarteer Datensatz:

array(40) {
  [OXID]=>
  string(32) "068c58b2744ab0cf73eab1c590a724d7"
  [OXPARENTID]=>
  string(8) "oxrootid"
  [OXLEFT]=>
  string(1) "1"
  [OXRIGHT]=>
  string(1) "2"
  [OXROOTID]=>...

Frage:
jetzt wollte ich mal nachfragen, ob das früher drinne war und rausgenommen wurde. Oder ob bei mir irgend was falsch läuft nach dem update zu 6.x und das eigentlich beim aufrufen von getAll() so erstellt werden sollte.


#2

versuch mal mit getAssoc() statt getAll(),
alternativ kann man beim Holen der DB Verbindung angeben, dass man assoc arrays haben will oxDb::getDB(FETCH_MODE_ASSOC)


#3

ah alles klar, das funktioniert. Danke