PDO, foreach bij elke query?
Ik ben sinds enkele dagen bezig met PDO, nu heb ik de volgende code om gegevens uit de database op te halen.
is dit de juiste manier om 1 resultaat op te vragen? Het lijkt me nogal onlogisch om een foreach te gebruiken als je maar 1 resultaat wilt hebben (bijvoorbeeld een username van een gebruiker)
Code (php)
1
2
3
2
3
$this->query = "SELECT naam,categorie_id FROM formulieren WHERE id='".$tickets['formulier_id']."' LIMIT 1";
foreach($db->query($this->query) as $formulieren)
{
foreach($db->query($this->query) as $formulieren)
{
is dit de juiste manier om 1 resultaat op te vragen? Het lijkt me nogal onlogisch om een foreach te gebruiken als je maar 1 resultaat wilt hebben (bijvoorbeeld een username van een gebruiker)
Gesponsorde koppelingen:
Dylan Onowerp op 08/02/2012 12:36:04:
Het lijkt me nogal onlogisch om een foreach te gebruiken als je maar 1 resultaat wilt hebben (bijvoorbeeld een username van een gebruiker)
Dat is ook niet logisch.
Als je één resultaat via PDO wilt verkrijgen dan kun je dat op deze manier doen:
Verder kun je eens kijken naar de fetchcolumn functie. Ik heb even gezocht voor je, je kunt dit in mysql doen met mysql_result(), alleen bestaat er geen dergelijke functie in PDO.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$db = new PDO('connectie');
$sql-$db->prepare("SELECT naam,categorie_id FROM formulieren WHERE id=".$tickets['formulier_id']." LIMIT 1");
$sql->execute();
$result = $sql->fetch();
echo $result['naam'] . ' - ' . $result['categorie_id'];
?>
$db = new PDO('connectie');
$sql-$db->prepare("SELECT naam,categorie_id FROM formulieren WHERE id=".$tickets['formulier_id']." LIMIT 1");
$sql->execute();
$result = $sql->fetch();
echo $result['naam'] . ' - ' . $result['categorie_id'];
?>
Verder kun je eens kijken naar de fetchcolumn functie. Ik heb even gezocht voor je, je kunt dit in mysql doen met mysql_result(), alleen bestaat er geen dergelijke functie in PDO.
Je kan ook fetchAll(PDO::FETCH_ASSOC) gebruiken zodat je in een keer een associatieve array eruit krijgt met elk element een record.
@Bas, bedankt ik doe het nu op 'jouw' manier!
@Erwin, ik snap nog niet heel veel van PDO en vind het al verwarrend dat je verschillende klasses moet gebruiken om 1 query uit te voeren ($sql en $db). Wat bedoel jij precies? Kan je een voorbeeld geven?
Bedankt allen.
@Erwin, ik snap nog niet heel veel van PDO en vind het al verwarrend dat je verschillende klasses moet gebruiken om 1 query uit te voeren ($sql en $db). Wat bedoel jij precies? Kan je een voorbeeld geven?
Bedankt allen.
Ik neem het voorbeeld van Bas, maar dan voor een query die meerdere records oplevert:
Nu is dus $result een array met alle records erin. Ook als het overigens maar een record is. Als je wilt weten hoe $result er precies uitziet, doe een print_r($result).
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$db = new PDO('connectie');
$sql->$db->prepare("SELECT naam,categorie_id FROM formulieren WHERE id=".$tickets['formulier_id']." LIMIT 1");
$sql->execute();
$result = $sql->fetchAll(PDO::FETCH_ASSOC);
?>
$db = new PDO('connectie');
$sql->$db->prepare("SELECT naam,categorie_id FROM formulieren WHERE id=".$tickets['formulier_id']." LIMIT 1");
$sql->execute();
$result = $sql->fetchAll(PDO::FETCH_ASSOC);
?>
Nu is dus $result een array met alle records erin. Ook als het overigens maar een record is. Als je wilt weten hoe $result er precies uitziet, doe een print_r($result).
Oké bedankt! Ik ga ermee aan de slag!



