2010-10-08 77 views
64

我檢索數據之前,我總是要輸入:是否可以設置默認的PDO獲取模式?

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

在做我的代碼更易讀的利益,這將是巨大的,如果我能的地方設置一個默認的模式....

謝謝!

編輯。我本來希望我能PDO補充:FETCH_OBJ到setAttribute代碼,我當我連接到數據庫上運行,但似乎並沒有工作......

回答

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

感謝您發表的回答!雖然代碼片段可以回答這個問題,但添加一些附加信息仍然很棒,比如解釋等。 – j0k 2013-01-10 09:11:24

+0

當然可以! 只需添加PDO允許設置參數列表。因此,使用數組$ options,您可以輕鬆地添加更多輸入來自定義您的查詢輸出... – 2013-01-10 09:44:45

0

有許多方式你可以做到這一點,但我做它,因爲我想成爲它。對於MySQL,端口爲3306,位於PDO中。我做了一個字符串名稱$dsn。現在我打電話給新的PDO $db = new PDO(...)

您需要使用PDO::FETCH_OBJ當你初始化數據庫 連接,你可以做的各種方式,但我做到了內嵌數組作爲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

想知道爲什麼會有人想要upvote過時的答案,而現有答案是完全相同的。逆轉。 – 2016-06-09 06:13:31

+0

它可能是我做一點不同,並添加一些說明,其實我從這個問題得到的答案,看到答案不是任何描述,所以我添加另一個答案,我開始學習今天的PDO。 – 2016-06-09 06:16:49

+0

出於某種原因,你在你的回答中描述了一個DSN,但不是關於實際問題的一個詞。 – 2016-06-09 06:43:21

相關問題