2013-02-20 20 views
7

Truy vấn PDO của tôi trả về mọi thứ dưới dạng chuỗi.Làm cách nào tôi có thể tìm nạp các kiểu dữ liệu chính xác từ MySQL với PDO?

Tôi có một lớp người dùng có id (int) và username (varchar).

Khi tôi thử sql yêu cầu sau đây

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

và var_dump ($ user_data), tham số id là một chuỗi. Làm thế nào tôi có thể làm cho nó để PDO tôn trọng các kiểu dữ liệu chính xác từ mysql?

+0

Bạn sẽ phải đấu tranh với điều đó trong php. Tôi đề nghị bạn nên đưa vào php những gì bạn đang mong đợi. – Stevo

+0

Bạn có nghĩa là sau mỗi yêu cầu tôi nên intval()/strval() mỗi tham số bằng tay? – Lukmo

+0

vâng, tôi thường làm 'echo (int) "1";' hoặc echo (chuỗi) "1"; – Stevo

Trả lời

3

Bạn có thể sử dụng fetch_style khác. Nếu bạn có một lớp người dùng, bạn có thể buộc PDO để trả về một thể hiện của các tài lớp với

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

Bây giờ bạn có thể chăm sóc đặc tính hợp lệ và đúc bên trong lớp người dùng, nơi mà nó thuộc về.

liên quan:

+0

Cảm ơn rất nhiều, đây là một ý tưởng tuyệt vời mà sẽ dẫn đến mã sạch hơn. – Lukmo

Các vấn đề liên quan