2010-10-08 142 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

相关问题