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