Rechercher de manière sécurisée un seul enregistrement

Fermé
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - 26 mars 2015 à 14:37
 Utilisateur anonyme - 26 mars 2015 à 14:53
Bonjour à tous,
Pouvez vous me dire comment rechercher de manière sécurisée la présence
d'un enregistrement dans une table selon un critère de recherche variable, sachant que la réponse peut être soit 0 ou 1.
On m'a dit : "si tu sélectionne un seul enregistrement avec une seule colonne, pourquoi en faire un array avec fetch ?"

En clair, comment coder cette requête sans array ?

Voici mon code :


// Récupération de l'ID de l'aliment qui vient d'être inséré dans la base :
$requete4 = $bdd->prepare('SELECT aliment_id FROM menu_aliments WHERE aliment_nom = :nomaliment LIMIT 1');
// Exécution de la requête :
$requete4->execute(array('nomaliment' => $_GET['nomaliment'])) or die(print_r($requete4->errorInfo()));;
// Récupération de la réponse :
$reponse4 = $requete4->fetch();
$idaliment = $reponse4['aliment_id'];


Merci d'avance pour vos réponses !


1 réponse

Bonjour

Tu devrais le demander au "On" qui t'a dit ça.

Blague à part, je ne trouve rien à redire à ta façon de faire. Le fait que tu aies une seule ligne et une seule colonne n'y change rien. J'aurais écrit la même chose.
Sauf ;; à la fin d'une instruction, un seul ; suffit ;-).
Et aussi, j'aurais testé if ($reponse4 ===false), on n'est jamais sûr qu'il y a une ligne dans la réponse.

[Edit] En relisant... Si l'id que tu cherches à récupérer est un champ auto incrémenté et que tu viens juste de faire l'INSERT, tu as $bdd->lastinsertId() qui fait le même boulot en une seule ligne, et est plus fiable car si deux instances de ton script s'exécutent en même temps, tu risques de récupérer un aliment_id créé par l'autre instance avec ta méthode.
0