Opérateur inconnu

Résolu/Fermé
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 - 8 avril 2020 à 11:24
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 - 8 avril 2020 à 12:02
Bonjour,

Malgré une recherche sur les manuels de PHP (et Google), je n'ai pas trouvé la réponse...
Quelle est la signification de cet opérateur '=:' dans cette requête qui m'a été communiquée ?
$sql = "SELECT DISTINCT Nom, Prenom 
        FROM Inscriptions 
        WHERE Num=:num ";

en sachant que Nom, Prenom et Num sont des champs d'une table et que num une chaine issue d'un $_POST reçu d'un formulaire précédent.

Ce n'est ni un opérateur d'affectation, ni de comparaison. Du moins dans la liste de la documentation.

Désolé d'être tant ignorant et de chercher à comprendre (bon après, je me dis que je ne dois pas être le premier retraité à essayer de taper sur un clavier...).

Configuration: Windows / Firefox 75.0 / PHP 5.6.34


--

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
8 avril 2020 à 11:43
Bonjour,

Pour effectuer des requêtes préparées en PDO tu peux
soit utiliser le point d'interrogation
$sql = " SELECT * 
    FROM tatable
    WHERE champ1 = ? OR champ2 = ? ";

ce qui implique que les "valeurs" à utiliser à la place de ces "?" soient remplacées par un array (l'ordre dans lequel tu marques les valeurs correspond à l'ordre des "?" dans la requête
$data = array(10,'truc');


L'autre solution est d'utiliser des variables nommées.
ici... ce n'est pas "=:" mais ":num"
En reprenant mon exemple, ça donne :

$sql = " SELECT * 
    FROM tatable
    WHERE champ1 = :variable1 OR champ2 = :variable2 ";

et le remplacement se fait à l'aide d'un array associatif
$data = array(":variable1"=> 10 ,":variable2"=>'truc');

qui fonctionne également si je change l'ordre
$data = array( ":variable2"=>'truc' , ":variable1"=> 10);


1
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 2
8 avril 2020 à 12:02
Merci,
Je recherchais justement mon post pour dire que j'avais trouvé un exemple et que j'avais compris que :num était en fait un contenant qui prenait les valeurs du champ Num et qu'ensuite dans le tableau des résultats, on garderait les datas de ce contenant qui auraient pour valeur notre variable issue du $_POST.

ça avance...
Un grand merci à toi.
Daniel
0