可以设置默认的PDO提取模式吗?


73

在检索数据之前,我总是必须输入:

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

为了使我的代码更具可读性,如果我可以在某处设置默认模式,那将很棒。

谢谢!

编辑。我本来希望可以将PDO:FETCH_OBJ添加到我连接到数据库时运行的setAttribute代码中,但这似乎不起作用...

Answers:


138
$connection = new PDO($connection_string);
$connection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);

26
$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 );

感谢您发布答案!虽然代码片段可以回答这个问题,它仍然很大周围添加一些附加信息,如解释,等等。
j0k

当然是 !只需添加该PDO,即可设置参数列表。因此,使用数组$ options可以轻松添加更多输入以自定义查询输出...
N'KauhNathan-RégisBodje 2013年

就目前而言,这看起来很棒。此外,它适用于PDO :: FETCH_NAME和PDO :: FETCH_ASSOC,...等等
BradChesney79
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.