Прежде чем я получаю данные, мне всегда нужно вводить:
$STH->setFetchMode(PDO::FETCH_OBJ);
В интересах сделать мой код более читаемым, было бы здорово, если бы я мог установить режим по умолчанию где-то ….
Благодаря!
Изменить . Я изначально надеялся, что я могу добавить PDO: FETCH_OBJ в код setAttribute, который я запускаю, когда я подключаюсь к БД, но это, похоже, не работает …
$connection = new PDO($connection_string); $connection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
$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 );
Есть несколько способов сделать это, но я делаю это так, как хочу. Для 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 ));