Prepared statment avec select

Messages postés
17
Date d'inscription
mardi 31 décembre 2013
Statut
Membre
Dernière intervention
13 janvier 2014
-
bonjour les amis

j ai un pti prebleme

comment lancer une requet pre parer select en PDO;(ou mysqli)

merci
<html>
<head>
<body>
<?php
/**
* Classe implémentant le singleton pour PDO
* @author Savageman
*/

class PDO2 extends PDO {

private static $_instance;

/* Constructeur : héritage public obligatoire par héritage de PDO */
public function __construct( ) {
}
// End of PDO2::__construct() */

/* Singleton */





public static function getInstance() {

if (!isset(self::$_instance)) {

try {

self::$_instance = new PDO('localhost', 'root', 'admin','effacer');

} catch (PDOException $e) {

echo $e;
}
}
return self::$_instance;
}
// End of PDO2::getInstance() */
}




public static function submit_request($nom){
$pdo = PDO2::getInstance();
$sql = "SELECT * FROM effacer WHERE nom = :nom ";
$prepareStatement = $pdo->prepare($sql);
$prepareStatement->bindParam(':nom', $nom);

if ($prepareStatement->execute()) {

$result = $prepareStatement->fetchALL(PDO::FETCH_OBJ);
return $result;
}
return $prepareStatement->errorInfo();

}






print_r($result);
print_r($prepareStatement);



?>




</body>
</html>
Afficher la suite 

2 réponses

Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
0
Merci
Hello,

C'est simple comme bonjour :).

Conseil : ne stocke pas les identifiants à ta BDD en dur dans ta classe PDO, définis les en amont dans ton code, par exemple :


define('MYBDD', 'mysql:dbname=nomdetabase;host=localhost');
define('BDDUSER', 'username');
define('BDDPWD', 'password');

Ensuite tu charges ta classe contenant les constantes définies :


class PDO2 extends PDO {

private static $_instance;

/* Constructeur : héritage public obligatoire par héritage de PDO */
public function __construct( ) {

}
// End of PDO2::__construct() */

/* Singleton */
public static function getInstance() {

if (!isset(self::$_instance)) {

try {

self::$_instance = new PDO(MYBDD, BDDUSER, BDDPWD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

} catch (PDOException $e) {

echo $e;
}
}
return self::$_instance;
}
// End of PDO2::getInstance() */
}

C'est la classe que j'utilise généralement, celle-ci est optimisée pour les BDD en UTF8 ("array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")").

Bref, tu charges ça dans tes scripts et t'es pénard, il suffit alors de créer ton objet PDO pour effectuer tes requêtes :

Il te suffit de créer ton objet PDO comme ceci :


// création de l'objet PDO :
$pdo = PDO2::getInstance();

// préparation de la requête :
$req = $pdo->prepare("SELECT * FROM table");

// exécution de la requête :
$req->execute();

// récupération des résultats de la requête :
while($donnees = $req->fetch()){

$id = $donnees['id'];

}

Perso je te recommande de procéder ainsi pour ne pas te faire chier, suivant l'architecture de ton site il convient de charger les fichiers dans un ordre logique pour ne pas avoir du code redondant et inutile :

- - - Dans tes scripts "généraux" :

1 -> tu définis les constantes en tout premier lieu.

2 -> tu charges ta classe PDO.

3 -> tu crées ton objet PDO.

- - - Dans tes scripts "annexes" :

tu effectues tes requêtes simplement en appelant l'objet PDO créés :
(je ne te redonnes pas d'exemple pour le SELECT)


// exemple d'insertion :
$req = $pdo->prepare("INSERT INTO table (nom, prenom, age) VALUES (:nom, :prenom, :age)");

$req->execute(array(
":nom" => "DUPONT",
":prenom" => "Jean-René",
":age" => 25
));

// exemple d'update :
$req = $pdo->prepare("UPDATE table SET age = :age WHERE nom = :nom");

$req->execute(array(
":age" => 33,
":nom" => "DUPONT"
));

// exemple avec DELETE :
$req = $pdo->prepare("DELETE FROM table WHERE prenom = :prenom");

$req->execute(array(":prenom" => "Jean-René"));

// compter les résultats d'une requête :

$nb = $req->rowCount(); // retourne le nombre de lignes de la requête

Si tu veux en savoir + je t'invite à feuilleter ce tutoriel :

http://fr.openclassrooms.com/informatique/cours/concevez-votre-site-web-avec-php-et-mysql

A+
Commenter la réponse de BBFUNK01
Messages postés
17
Date d'inscription
mardi 31 décembre 2013
Statut
Membre
Dernière intervention
13 janvier 2014
0
Merci
RE
bonjour
je te remercie pour cette bref explication j ai appris bc de chose.
si j ai plusieur select et insert sur le meme fichier php c est mieux de faire une classe et function au lieu de repeter la chaine de conex chaque fois ? .
Commenter la réponse de ayoubbrs