Bonjour à tous,
J'ai suivi le cours d'initiation à PHP et MYSQL d'Open classrooms et vu qu'il était recommandé d'utiliser l'extension PDO pour se connecter à une base de données. Je teste le code type fourni dans le cours, aucun problème, la connexion se fait bien.
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
Ensuite, j'ai cherché à me documenter sur PDO pour savoir un peu mieux comment ça marche. Je tombe alors sur le site suivant : http://fmaz.developpez.com/tutoriels/php/comprendre-pdo/
Ce site propose apparemment un autre moyen de se connecter à la base de données. En fait, la séquence de code est plus ou moins similaire à celle du cours d'OC, mais il y a quelques nuances que je ne comprends pas. Voilà ce qu'on nous dit :
try {
$strConnection = 'mysql:host=localhost;dbname=ma_base'; //Ligne 1
$arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); //Ligne 2
$pdo = new PDO($connStr, 'Utilisateur', 'Mot de passe', $arrExtraParam); //Ligne 3; Instancie la connexion
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//Ligne 4
}
catch(PDOException $e) {
$msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
die($msg);
}
Voilà ce que j'ai pu en tirer :
Ligne 1 : On stocke le type de bdd et le nom de la bdd dans une variable $StrConnection
Ligne 2 : On récupère le charset utf8, on le met lui aussi dans une variable
Ligne 3 : C'est là que ça me pose problème. On instancie la connection à la base de données via PDO. Or, la variable contenant les informations de la ligne 1 ne correspond pas (en ligne 1, on a $StrConnection ; en ligne 3, c'est $ConnStr). Du coup, je ne comprends pas d'où sort cette nouvelle variable $ConnStr, pourquoi ne pas réutiliser $StrConnection? C'est une erreur de l'auteur ou j'ai raté quelque chose?
En outre, même en remplaçant en ligne 3 la variable $ConnStr par $StrConnection, le code ne fonctionne pas. J'arrive pas à me connecter à la BDD, ce code est bizarre. Je sais que c'est pas forcément vital mais j'aimerais bien comprendre pourquoi cette séquence de code ne fonctionne pas. Si vous avez une explication, je suis tout ouïe. Merci d'avance