[PHP] PDO

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mr_star
  • Registratie: Maart 2003
  • Laatst online: 16-05 13:15
Ik heb een probleem waar ik al langer tegenaan loop. In de PHP manual of op google vind ik geen antwoord.

Ik wil bijvoorbeeld volgende query uitvoeren via PDO:
SQL:
1
2
3
SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour

Hierbij moeten :calories en :colour vervangen worden door bijvoorbeeld de waarden 150 en red
En dat gebeurt via volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
   FROM fruit
   WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?> 

Dus uiteindelijk ziet mijn query er zo uit:
SQL:
1
2
3
SELECT name, colour, calories
FROM fruit
WHERE calories < 150 AND colour = 'red'

Nu komt de vraag: hoe krijg ik die laatste query (dus met alle parameters ingevuld) uit mijn PDO statement getrokken? Ik wil namelijk, om gemakkelijk aan debugging te kunnen doen, exact weten welke query er nu uiteindelijk uitgevoerd wordt. Ik vul nu via een zelfgemaakte functie zelf alle parameters in de query in. Op deze manier heb ik uiteindelijk ook hetzelfde resultaat, maar zo doe ik wel dubbel werk, het lijkt mij toch dat ik dit uit mijn PDO statement moet kunnen halen.

edit: Nu ben ik vergeten om mijn titel verder aan te vullen. Kan een mod dit veranderen naar: [PHP] PDO: uitgevoerde query weergeven?

[ Voor 4% gewijzigd door mr_star op 18-03-2007 15:18 ]


Acties:
  • 0 Henk 'm!

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Geestig ... dit is de eerste keer dat ik PDO zie ... was ik nog niet eerder tegengekomen.

Wat gebeurt er als je met print_r() of var_dump() het PDO object of (na SQL execution) het PDOStatement object bekijkt. Zit daar niet een variabele in die de gezochte info bevat?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Ik weet neit hoe het bij PHP geimplementeerd is, maar het kan heel goed dat prepared statements op een iets lager niveau afgehandeld worden. In dat geval hoeft de query niet eerst weer naar een string omgezet te worden, waarden ingevult te worden, maar wordt dat lager afgehandeld. In het kort komt het er op neer dat de compleet ingevulde query helemaal niet in tekst vorm bestaat.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'