Je vous remercie tous pour votre dévouement, mais la je ne comprends pas, je viens de parcourir les diverses infos présentes sur PDO notamment http://fmaz.developpez.com/tutoriels...omprendre-pdo/ et je ne comprends pas la raison de passer a PDO, meme celui qui a réalisé le tuto parle de "Si les requêtes préparées ont été introduites avec MySQL 4.1, il faut admettre que leur utilisation était plutôt complexe, longue et surtout pénible. "
Est ce que la sécurité contre les injections justifie de se prendre la tête a ecrire 30lignes la ou mysql ou mysqli le fait en 3 lignes ?
Attention, je ne veux pas être têtu, je veux juste comprendre, et vous ne perdrez pas votre temps à m'expliquer, je vous l'assure.
Est ce que l’intérêt principal de PDO est de l'utiliser au travers des requêtes préparées, car la sécurité est plus sure si l'on sépare les valeurs des commandes ?
Je vous dis ça car ce qui me fait peur c'est que j'ai un bon milliers de fonctions mysql a changer et j'ai juste 5 jours pour le faire, et aucune n'est pareille a l'autre, donc aucun intérêt a passer par une requête préparée.
Je sais que vous êtes Pro-PDO, mais quand meme, rien qu'en lisant je suis flippé, je vous donne des exemples des mes fonctions mysql classiques que j'utilise et rien que pour le while chez PDO je n'ai rien compris :
Ma connexion :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
$pdo_conn = array();
$pdo_conn['hostname'] = 'xxxxx';
$pdo_conn['database'] = 'xxxxx';
$pdo_conn['username'] = 'xxxxx';
$pdo_conn['password'] = 'xxxxx';
try {
$pdo_conn['strConn'] = 'mysql:host='.$pdo_conn['hostname'].';dbname='.$pdo_conn['database'];
$pdo_conn['extraParam'] = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => true, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
$pdo->query("SET NAMES 'utf8'"); // j'ai rajouté cette syntaxe car apparemment MYSQL_ATTR_INIT_COMMAND ne fonctionne pas selon la version de PHP
$pdo = new PDO($pdo_conn['strConn'], $pdo_conn['username'], $pdo_conn['password'], $pdo_conn['extraParam']);
}
catch(PDOException $e){$msg = 'ERREUR PDO dans ' . $e->getFile().' L.' . $e->getLine().' : ' . $e->getMessage(); die($msg);}
$pdo_conn = array(); |
Je definie mes 2 variables de base :
1 2 3
|
$suff_table="nomdematable_";
$idC='2'; |
Je test differentes séquences en mysql et PDO:
SELECT :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
MYSQL
$res = mysql_query("SELECT * FROM `".$suff_table."A` A, `".$suff_table."B` B where A.idC=B.idC and A.idC='$idC'");
while($cl = mysql_fetch_array($res, MYSQL_ASSOC))
{
$nom=$cl['nom'];
$prenom=$cl['prenom'];
}
PDO
$re_S = $pdo ->query("SELECT nom,prenom FROM `".$suff_table."A` A, `".$suff_table."B` B where A.idC=B.idC and A.idC='$idC'");
while ($test=$re_S ->fetch()){
$nom=$test->nom;
$prenom=$test->prenom;
} |
INSERT:
1 2 3 4 5 6 7 8 9 10
|
MYSQL
$modif=mysql_query("INSERT INTO `".$suff_table."A` (`idC`) VALUES ('$idC')");
PDO
$re_I = $PDO->prepare("INSERT INTO `".$suff_table."A` (nom, prenom) VALUES (:nom, :prenom)");
$re_I ->execute(array(
"nom" => $nom,
"prenom" => $prenom
)); |
UPDATE :
1 2 3 4 5 6 7
|
MYSQL
$modif=mysql_query("UPDATE `".$suff_table."A` SET nom='toto' WHERE idC='$idC'");
PDO
$re_U = $pdo ->prepare('UPDATE `".$suff_table."A` SET nom= ? WHERE idC = ?');
$re_U ->execute(array($_POST['idC'])); |
Par contre pour celles la je sèche un peu :
1 2 3 4 5 6 7 8 9 10
|
MYSQL
$res = mysql_query("SELECT * FROM `".$suff_table."A` where idC='$idC'");
$nb=mysql_num_rows($res);
if ($nb==0){
}
Est ce cela que l'on doit écrire en PDO .
$re_NB = $pdo ->query("SELECT nom,prenom FROM `".$suff_table."A` A, `".$suff_table."B` B where A.idC=B.idC and A.idC='$idC'");
$NB = $re_NB ->rowCount(); |
////
Est ce que cela est correct en PDO :
$somme = $pdo ->query("SELECT SUM(totfin) as com FROM `".$suff_table."A` A, `".$suff_table."B` B where A.idC=B.idC and A.idC='$idC'");
?
Et si oui je ne trouve pas l'equivalent de cette syntaxe mysql en PDO s'il vous plait l'équivalent :
1 2 3
|
$tot = mysql_result($somme , 0, 'com');
$tot=ceil($totMT_1/1000); |
Merci pour ces premieres aides Ô combien précieuse pour moi.
Bonne journée a tous
Partager