2010-10-08 20 views
64

Trước khi tôi lấy dữ liệu tôi luôn luôn phải gõ:Có thể đặt chế độ lấy mẫu PDO mặc định không?

$STH->setFetchMode(PDO::FETCH_OBJ); 

Vì lợi ích của việc mã của tôi dễ đọc hơn nó sẽ là tuyệt vời nếu tôi có thể thiết lập một chế độ mặc định ở đâu đó ....

Cảm ơn!

Chỉnh sửa. Tôi ban đầu hy vọng tôi có thể thêm PDO: FETCH_OBJ đến setAttribute mã tôi chạy khi tôi kết nối với DB, nhưng điều đó dường như không làm việc ...

Trả lời

117
$connection = new PDO($connection_string); 
$connection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); 
21
$dsn = 'mysql:host='.$db_server.';dbname='.$db_name.';port='.$db_port; 
$driver_options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'", 
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, 
);    
$dbh = new PDO($dsn, $db_user, $db_pass, $driver_options); 
+0

Cảm ơn bạn đã đăng câu trả lời! Mặc dù đoạn mã có thể trả lời câu hỏi vẫn tuyệt vời khi thêm một số thông tin bổ sung xung quanh, như giải thích, v.v. – j0k

+0

Có tất nhiên! Chỉ cần thêm PDO đó cho phép thiết lập danh sách tham số. Vì vậy, bằng cách sử dụng mảng $ tùy chọn bạn có thể dễ dàng thêm đầu vào nhiều hơn để tùy chỉnh bạn truy vấn đầu ra ... –

0

Có nhiều cách bạn có thể làm được điều đó, nhưng tôi làm nó như tôi muốn. Đối với số MySQL có cổng 3306, trong PDO. Tôi tạo một tên chuỗi $dsn. Bây giờ tôi thực hiện cuộc gọi cho PDO mới với $db = new PDO(...).

Bạn cần phải sử dụng PDO::FETCH_OBJ khi bạn khởi tạo kết nối cơ sở dữ liệu của bạn, Bạn có thể làm điều đó nhiều cách khác nhau nhưng tôi đã làm nó mảng inline như ra tham số của new PDO.

$dsn = 'mysql:dbname=test;host=localhost;port=3306'; 
$username = 'root'; 
$password = ''; 
$db = new PDO($dsn, $username, $password, array (
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ 
)); 
+0

Tự hỏi tại sao bất cứ ai muốn upvote một câu trả lời lỗi thời là một bản sao chính xác cho hiện tại. Đã đảo ngược. –

+0

Nó có thể là tôi tạo ra một chút khác biệt và thêm một số mô tả, Thực ra tôi đã nhận được câu trả lời từ câu hỏi này và thấy câu trả lời không phải là bất kỳ mô tả nào để tôi thêm một câu trả lời nữa, tôi bắt đầu học PDO vào hôm nay. –

+0

Vì một số lý do bạn mô tả trong câu trả lời của mình một DSN, nhưng không phải là một từ liên quan đến câu hỏi thực tế. –

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