Finalement, quelle est la différence entre ces deux scripts ?

WRInaute occasionnel
Bonjour,

Grâce à certains ici (et sur le forum Développez), j'ai réussi à écrire deux petits scripts pdo/mysqli. Ils fonctionnent bien, mais à vrai dire je n'ai pas vraiment compris la différence...
Tout de suite avec deux exemples simplifiés. En clair, il s'agit d'afficher une liste d'articles par ordre alphabétique. La seule différence est que le premier script les trie en plus en fonction d'une lettre retournée par l'URL :

SCRIPT n°1
Code:
$dbh = new PDO('mysql:host=localhost;dbname=dico','dicoco7', 'SD_q,[nX,');   
/** on définit la requete sql */
$sql = "SELECT *
FROM cms_custom_database
WHERE field_2 LIKE :lettre
ORDER BY 
record_dynamic ASC
";
$stmt = $dbh->prepare ($sql); /* On prépare la requête */
/** On prépare les paramètres */
$params = array(':lettre' => $_GET['lettre'].'%');
/** On execute la requete */
$stmt->execute($params);
while($livre=$params = $stmt->fetch(PDO::FETCH_OBJ))
{
echo''.$livre->field_33.''
}

SCRIPT n°2
Code:
echo'
$dbh = new PDO('mysql:host=localhost;dbname=dico','dicoco7', 'SD_q,[nX,');   

$livres = $dbh->query('
SELECT 
*
FROM 
cms_custom_database_2
ORDER BY 
primary_id_field 
);

while ($livre = $livres->fetch())
{
echo'
'.$livre['primary_id_field'].''
}

ALORS QUESTIONS, S'IL-VOUS-PLAIT :
1) Pourquoi suis-je obligé dans les deux cas d'établir une connexion avec new PDO ? Cela signifie-t'il que je fais ainsi de la programmation objet ? Et pouvais-je faire autrement ?
2) Dans le premier cas, j'ai une requête préparée et pas dans l'autre. Le premier cas est celui qui récupère une variable $_GET[], par l'url donc. La requête préparée était-elle par suite indispensable ? Ou alors que pouvait-on faire d'autre ?
3) finalement, il n'est question nulle part de mysqli, ici ? C'est seulement dans le premier cas du POO avec une requête préparée et dans le second u POO, tout court ? :oops:
4) Et dans le second cas, pourquoi affiche-t'on le résultat de la requête "à l'ancienne", comme ça $res['field'], plutôt que comme ça $res->field ?


Merci d'avance pour vos réponses ! La pratique vaut mieux que mille articles...
 
WRInaute accro
1- essaye d'exécuter une requête sans te connecter à la base de données ^^
2- le premier script a un paramètre dans la requête, pas le second, donc dans le second il n'y a rien à préparer :D
3- mysqli est une fonction php :)
4- ce n'est pas "à l'ancienne", c'est selon que ta fonction renvoie un tableau (second cas) ou un objet (premier cas)
 
WRInaute occasionnel
Salut chère Marie-Aude,

Marie-Aude a dit:
1- essaye d'exécuter une requête sans te connecter à la base de données ^^
Oui j'ai bien compris, mais est-on obligé désormais de se connecter de cette manière, avec la formule new PDO ?
2- le premier script a un paramètre dans la requête, pas le second, donc dans le second il n'y a rien à préparer :D
Hin hin
mysqli est une fonction php :)
Et pas PDO ?
ce n'est pas "à l'ancienne", c'est selon que ta fonction renvoie un tableau (second cas) ou un objet (premier cas)
Dans le premier cas, plus novateur à mon sens, y-avait-il moyen de faire autrement ?
Il faut que je pige quand je dois utiliser pdo, ou mysqli et si je peux choisir ou pas du tout, ou si ça s'utilise ensemble obligatoirement dans certains cas, ou pas, ou jamais, etc...
 
WRInaute impliqué
la principale différence, c'est que dans un cas, tu restreins les données de la table avant de trier, et dans l'autre, tu tries la table entière. c'est bien plus long dans le second cas.
 
Discussions similaires
Haut