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

+0

Да, конечно! Просто добавьте, что PDO позволяет установить список параметров. Таким образом, используя параметры массива $, вы можете легко добавить больше вклада, чтобы настроить ваш вывод запроса ... –

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

Удивительно, почему кто-то хочет пересмотреть устаревший ответ, который является точным дубликатом для существующего. Перевернутый. –

+0

Может быть, я немного поменяю и добавлю какое-то описание, На самом деле я получил ответ от этого вопроса и увидел, что ответы не являются описанием, поэтому я добавляю еще один ответ, я начинаю изучать PDO к сегодняшнему дню. – 2016-06-09 06:16:49

+0

По какой-то причине вы описываете в своем ответе DSN, но не слово, касающееся актуального вопроса. –

Смежные вопросы