2013-02-20 12 views
7

il mio recupero PDO restituisce tutto come una stringa.Come posso recuperare i tipi di dati corretti da MySQL con PDO?

Ho una classe utente con id (int) e username (varchar).

Quando provo la seguente richiesta SQL

$db->prepare('SELECT * FROM users WHERE id=:id_user'); 
$db->bindParam(':id_user', $id_user); 
$db->execute(); 
$user_data = $db->fetch(PDO::FETCH_ASSOC); 

e var_dump ($ user_data), il parametro id è una stringa. Come posso renderlo così PDO rispetta i tipi di dati corretti da mysql?

+0

si sta andando a lottare con questo in php. Ti suggerisco di inserire in PHP ciò che ti aspetti. – Stevo

+0

Vuoi dire dopo ogni richiesta che dovrei intval()/strval() ogni parametro manualmente? – Lukmo

+0

sì, di solito faccio 'echo (int) "1";' o echo (string) "1"; – Stevo

risposta

3

È possibile utilizzare un diverso fetch_style. Se si dispone di una classe utente, si potrebbe forzare DOP per restituire un'istanza della classeutente con

$statement->fetchAll(PDO::FETCH_CLASS, "User"); 

Ora è possibile prendersi cura di proprietà convalide e colata all'interno della classe utente, a cui appartiene.

correlati:

+0

Grazie mille, questa è un'idea eccellente che si tradurrà in un codice più pulito. – Lukmo

Problemi correlati