Opérateur inconnu [Résolu]

Signaler
Messages postés
62
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
31 mai 2020
-
Messages postés
62
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
31 mai 2020
-
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

Messages postés
28972
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juin 2020
2 488
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);


Messages postés
62
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
31 mai 2020

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