probleem met mijn getArray functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ralph vander tang

ralph vander tang

15/08/2013 14:36:37
Quote Anchor link
hoi iedereen,

ik ben bezig met mijn database class en nu wil ik een functie maken die een array aanmaakt en deze eventueel aan past aan de behoefte.

dus ik wil de key van de array kunnen aanpassen en ook de meegestuurde values.
het probleem is dat ik de waardes wel mee stuur maar er niks gebeurdt

ik zal hier onder mijn functie plaatsen en zou er graag suggesties op willen krijgen om dit problleem op te lossen

de functie
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
  public function getArray($keyCol = false, $valueCol = false){
    
    if(!$this->query) die("geen query");
  
    $prep = $this->db->prepare($this->query);
    $prep->execute($this->fields);
    
    $arr = array();
    
    while($row = $prep->fetch(PDO::FETCH_ASSOC)){
    
      $arr[] = $row;
    
    }

    if (!$keyCol) {
        $arr[] = $row;
      }
elseif (!$keyCol && $valueCol) {
        $arr[] = $row[$valueCol];
      }
elseif ($keyCol && $valueCol) {
        $arr[$row][$keyCol] = $row[$valueCol];
      }
else {
          $arr[$row][$keyCol] = $row;
        }

    
    return $arr;
    
  }

?>


index.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
$db
= new pdb();
// hier een query met een where clausule
/* begin query met where clausule.
 *
 * $db->setQuery("SELECT * FROM tblusers WHERE user_id = :user_id");
 * $db->addField(":user_id", 32);
 *
 *  einde
 */  

// hier eentje die een gehele tabel ophaalt en er een array van maakt

$db->setQuery("SELECT * FROM tblusers");

// hier geef je $keyCol , $valueCol mee deze staat standaard op false.
$array = $db->getArray();

?>
 
PHP hulp

PHP hulp

14/05/2024 20:51:27
 
Chris PHP

Chris PHP

15/08/2013 14:58:27
Quote Anchor link
Regel 13 is dubbel op, je maakt nu van een array een array.

Je doet een fetch(PDO::FETCH_ASSOC) deze returned een associative array (betekend dat hij de veldnamen retouneerd). Dus je $row is al een array, heeft geen nut om deze nogmaals aan een array te assignen.

Dus als je bijvoorbeeld username, password, name, sirname hebt als velden die je ophaald uit je query haal je die op met $row['username'], $row['password'], $row['name'] en $row['sirname']. Deze ga je dan in je whileloop checken.
Gewijzigd op 15/08/2013 14:59:19 door Chris PHP
 
Erwin H

Erwin H

15/08/2013 14:59:19
Quote Anchor link
Afgezien van het feit dat ik echt werkelijk geen idee hebt wat je probeert te doen met die functie... zitten er ook wel een paar problemen in.

1) als die een functie (method) is binnen een class dan moet je zeker geen die() gebruiken bij een fout, maar een exception gooien. Het is niet aan een method of zelfs aan een willekeurige class om te bepalen dat het script gestopt moet worden.
2) je hele if constructie staat buiten je while loop. Dat betekent dat op het moment dat je die if constructie ingaat $row al false is geworden, immers, je hebt alles gefetched dus je data is op.
3) je tweede optie in je if constructie zal nooit gebruikt worden. De eerste is namelijk !$keyCol, dus bij de tweede is dat nog steeds zo. Geldt het niet bij de eerste, dan geldt het ook niet bij de tweede.
4) dit kan nooit: $arr[$row][$keyCol]. $row is een rij (een array dus) uit je database (hoewel zoals vastgesteld bij punt 2 is het false) en kan dus nooit een key zijn van je array.

Maar begin bij het begin, wat probeer je hier uberhaupt mee te doen?
 
Ralph vander tang

ralph vander tang

15/08/2013 15:08:09
Quote Anchor link
ik wil van een query een array maken en onder tussen werkt het al moest idd de elseif in de while loop zetten

bedankt
 
Erwin H

Erwin H

15/08/2013 15:11:34
Quote Anchor link
Zie punten 3 en 4, het kan dus niet (helemaal correct) werken.

Heb je ook al eens naar fetchall gekeken?
http://php.net/manual/en/pdostatement.fetchall.php
Gewijzigd op 15/08/2013 15:11:57 door Erwin H
 
Chris PHP

Chris PHP

15/08/2013 15:16:01
Quote Anchor link
Ralph vander tang op 15/08/2013 15:08:09:
ik wil van een query een array maken


$row is al een array, geen nut om dat nogmaals als array te assignen schiet je niets mee op.

Een fetch returned een array tenzij je PDO::FETCH_OBJ kiest dan is het een object, maar metPDO::FETCH_ASSOC is het gewoon een array. Kijk naar het advies van Erwin.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.