Можно ли установить режим выборки PDO по умолчанию?

Прежде чем я получаю данные, мне всегда приходится печатать:

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

В интересах сделать мой код более удобочитаемым, было бы здорово, если бы я мог установить режим по умолчанию где-то....

Спасибо!

Edit. Я изначально надеялся, что могу добавить PDO: FETCH_OBJ в setAttribute код, который я запускаю, когда я подключаюсь к БД, но это не кажется работать...

Ответ 1

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

Ответ 2

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

Ответ 3

Есть несколько способов сделать это, но я делаю это так, как хочу. Для 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
));