- Accueil
- Info légales
- Aide (FAQ)
- Les tags de ce site
- Bloc note
- Articles techniques
- Notes system
- Divers articles
- Drupal
- Notes ITIL 2007
- Notes MS
- Dans le quartier...
- Emploi
- Recettes de cuisine et adresses gourmandes
- mes applis ubuntu préferées
- Divers acronymes du monde social
- Internet 2018
- P2 meublé à louer - quartier du Poteau 75018
- apcos - réseaux sociaux et outils
- Articles techniques
- Divers liens
- Fun
- Mon CV IT
- Nouveautés
MySQL PHP: connexion bd PDO
Méthodes: exec et query
exec -> requetes de maj
modifier le mot de passe des membres<?php
$connexion = new PDO("mysql:host=$PARAM_hote;dbname=$PARAM_nom_bd", $PARAM_user, $PARAM_mot_passe); // connexion à la BDD
$connexion->exec("UPDATE membres SET mot_pass='toto'"); // on modifie le mot de passe de tous les utilisateurs
?>
savoir le nombre de lignes qui ont été affectées<?php
// création d'une connexion
$nombre_changement=$connexion->exec("UPDATE membres SET mot_pass='toto'"); // modif pw de tous les users
echo "La requête à modifié : $nombre_changement lignes.";
?>
query -> SELECT
liste des membres
<?php
$connexion = new PDO("mysql:host=$PARAM_hote;dbname=$PARAM_nom_bd", $PARAM_user, $PARAM_mot_passe); // connexion à la BDD
$resultats=$connexion->query("SELECT membre FROM membres ORDER BY membre ASC"); // tous les membres de la table qu'on trie par ordre croissant
$resultats->setFetchMode(PDO::FETCH_OBJ); // résultat récupérable sous forme d'objet
while( $ligne = $resultats->fetch() ) // récup la liste des membres
{
echo 'Utilisateur : '.$ligne->membre.'<br />'; // affiche les membres
}
$resultats->closeCursor(); // on ferme le curseur des résultats
?>
setFetchMode sous quel format on souhaite récupérer les résultats de la requête précédente. Il y a aussi: PDO::FETCH_ASSOC, PDO::FETCH_BOTH, PDO::FETCH_OBJ...
méthode plus courte d'écriture pour spécifier le mode, en le spécifiant directement dans fetch():
<?php
$ligne = $resultats->fetch(PDO::FETCH_OBJ)
?>
closeCursor permet de fermer le curseur associé à un jeu de résultats, il doit donc être fermé une fois que vous avez fini de récupérer les résultats, et également être fermé avant toute autre requête.
requetes préparées - méthode: prepare
prépare une requête SQL à être exécutée en offrant la possibilité de mettre des marqueurs qui seront substitués lors de l'exécution.
Il existe 2 types de marqueurs qui sont respectivement ? et les marqueurs nominatifs. Ces marqueurs ne sont pas mélangeables : donc pour une même requête, il faut choisir l'une ou l'autre des options.
liste des membres (sans marqueur)
<?php
// ouverture d'une connexion ...
$requete_prepare_1=$connexion->prepare("SELECT identifiant FROM membres"); // on prépare notre requête
$requete_prepare_1->execute();
while($lignes=$requete_prepare_1->fetch(PDO::FETCH_OBJ))
{
echo $lignes->identifiant.'<br />';
}
?>
marqueurs nominatifs
<?php
$requete_prepare_1=$connexion->prepare("SELECT identifiant FROM membres WHERE ID_membre = :id"); // on prépare notre requête
$requete_prepare_1->execute(array( 'id' => 1 ));
$lignes=$requete_prepare_1->fetch(PDO::FETCH_OBJ);
echo $lignes->identifiant.'<br />';
?>
avec marqueur ?
<?php
$requete_prepare_1=$connexion->prepare("SELECT identifiant FROM membres WHERE ID_membre = ? ");
$requete_prepare_1->execute(array( 1 ));
$lignes=$requete_prepare_1->fetch(PDO::FETCH_OBJ);
echo $lignes->identifiant.'<br />';
?>
Sécuriser sans passer par des requêtes préparées Methode quote
<?php
$RessourceDeConnection = new PDO(...); // ouverture d'une connection
$RessourceDeConnection->query("SELECT id_membre FROM membres WHERE nom = ".$RessourceDeConnection->quote($nom, PDO::PARAM_STR));
?>
Valeurs possibles pour le deuxième argument (si vous ne spécifiez pas de deuxième argument, la valeur PDO::PARAM_STR sera utilisée) :
- PDO::PARAM_STR : pour une chaîne de caractères ;
- PDO::PARAM_INT : pour le type 'integer' de SQL ;
- PDO::PARAM_NULL : pour le type NULL de SQL ;
- PDO::PARAM_BOOL : pour un booléen ;
- PDO::PARAM_LOB : pour le type 'objet large' de SQL.
Note: n'englobez aucune valeur avec ''
sources
- http://fr.openclassrooms.com/informatique/cours/pdo-interface-d-acces-au...
- http://fr.php.net/pdo
- pour débutants: http://fr.openclassrooms.com/informatique/cours/pour-aller-plus-loin-41