2013-02-20 12 views
7

moje pobranie PDO zwraca wszystko jako ciąg znaków.Jak mogę pobrać poprawne typy danych z MySQL za pomocą PDO?

Mam klasę użytkownika o identyfikatorze (int) i nazwie użytkownika (varchar).

Kiedy próbuję następujących SQL zażądania

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

i var_dump ($ User_Data), parametr id jest ciągiem. Jak mogę to zrobić, aby PDO szanowało poprawne typy danych z mysql?

+0

Będziecie walczyć z tym w php. Sugeruję, abyś rzucił w php, czego się spodziewasz. – Stevo

+0

Masz na myśli po każdym żądaniu powinienem intval()/strval() każdego parametru ręcznie? – Lukmo

+0

Tak, zwykle robię "echo (int)" 1 "; lub echo (ciąg) "1"; – Stevo

Odpowiedz

3

Można użyć innego fetch_style. Jeśli masz klasę użytkownika, można wymusić PDO zwraca instancję użytkownika klasie

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

Teraz można zadbać właściwości walidacji i odlewania wewnątrz klasy User, gdzie należy.

pokrewne:

+0

Wielkie dzięki, to świetny pomysł, który przyniesie czystszy kod. – Lukmo

Powiązane problemy