2010-10-08 2 views
64

Avant que je récupérer des données que je dois toujours taper:Est-il possible de définir un mode d'extraction PDO par défaut?

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

Dans l'intérêt de rendre mon code plus lisible que ce serait génial si je pouvais définir un mode par défaut quelque part ....

Merci!

Modifier. J'était à l'origine en espérant que je pourrais ajouter PDO: FETCH_OBJ au code setAttribute je lance lorsque je me connecte à la base de données, mais cela ne semble pas fonctionner ...

Répondre

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

Merci d'avoir posté une réponse! Alors qu'un extrait de code pourrait répondre à la question, il est toujours bon d'ajouter quelques informations supplémentaires, comme expliquer, etc. – j0k

+0

Oui bien sûr! Juste pour ajouter que PDO permet de définir une liste de paramètres. Donc, en utilisant les options array $, vous pouvez facilement ajouter plus d'entrées pour personnaliser votre sortie de requête ... –

0

Il y a plusieurs façons peut le faire, mais je le fais comme je veux l'être. Pour le MySQL avec le port 3306, dans PDO. Je fais un nom de chaîne $dsn. Maintenant, je fais un appel pour un nouveau PDO avec $db = new PDO(...).

Vous devez utiliser PDO::FETCH_OBJ lorsque vous initialisez votre connexion base de données , vous pouvez l'a fait de diverses manières, mais je l'ai fait ensemble en ligne comme vient paramètre de la 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

Je me demande pourquoi quelqu'un voudrait upvoter une réponse obsolète qui est un doublon exact pour l'existant. Renversé. –

+0

Son peut être je fais peu différent et ajouter une description, En fait, j'ai obtenu une réponse à partir de cette question et vu les réponses ne sont pas une description alors j'ajouter une autre réponse, je commence à apprendre le PDO aujourd'hui. –

+0

Pour une raison que vous décrivez dans votre réponse un DSN, mais pas un mot concernant la question réelle. –

Questions connexes