[RESOLU] unexpected identifier dans SELECT

Eléphanteau du PHP | 18 Messages

02 juil. 2025, 14:21

Bonjour
je ne comprends pas pourquoi j'ai "unexpected identifier adresse" dans la ligne suivante

Code : Tout sélectionner

SELECT adresse, FROM groupe_index WHERE groupe LIKE 'airbag';
Evidemment j'ai vérifié qu'il n'y avait pas d'erreur dans le nom "adresse" (du genre "espace")

Pourtant, ça fonctionne dans

Code : Tout sélectionner

$stmt = mysqli_prepare($bdd, "SELECT adresse FROM groupes_index WHERE groupe LIKE ?");
où bien entendu le ? est remplacé par 'airbag' après

Code : Tout sélectionner

mysqli_stmt_execute($stmt, [$_GET["Mot"]]);
Je ne vois pas pourquoi ça marche ici et pas là
Merci

Mammouth du PHP | 2703 Messages

02 juil. 2025, 17:06

il y a pourtant une différence qui saute aux yeux.

Eléphanteau du PHP | 18 Messages

03 juil. 2025, 13:59

si c'est de la virgule dont tu parle ça ne change rien !
avec ou sans c'est pareil.

(cette virgule se trouve dans plusieurs tuto même avec une seule colonne raison pour laquelle je l'ai mise après coup)

Mammouth du PHP | 2703 Messages

03 juil. 2025, 17:18

on peut avoir le code qui retourne cette erreur dans son contexte ?

Eléphanteau du PHP | 18 Messages

05 juil. 2025, 17:15

voilà

Code : Tout sélectionner

$bdd=mysqli_connect('localhost', 'root', '','proglyrics') or die ("Connexion au serveur impossible"); $groupe=$_GET['Mot']; SELECT adresse FROM groupe_index WHERE groupe LIKE 'airbag';
voilà ! et je reçois
"Parse error: syntax error, unexpected identifier "adresse" in H:\proglyrics\recherche.php on line 16"

D'accord je débute et je ne comprends pas grand chose mais là ...

Mammouth du PHP | 2703 Messages

05 juil. 2025, 17:56

que faites-vous avec
$stmt = mysqli_prepare($bdd, "SELECT adresse FROM groupes_index WHERE groupe LIKE ?");
mysqli_stmt_execute($stmt, [$_GET["Mot"]]);

et avec
SELECT adresse FROM groupe_index WHERE groupe LIKE 'airbag';
?

Avatar du membre
Mammouth du PHP | 1564 Messages

06 juil. 2025, 16:13

il faut utiliser "SELECT adresse FROM groupe_index WHERE groupe LIKE 'airbag'; " avec mysqli_query :

Code : Tout sélectionner

mysqli_query($bdd, "SELECT adresse FROM groupe_index WHERE groupe LIKE 'airbag'; ");
Ton LIKE est inutile et prend des ressources pour rien si tu n'utilise pas de %, fait directement avec =.

WHERE groupe = 'airbag'

Eléphanteau du PHP | 18 Messages

10 juil. 2025, 17:04

En fait j'ai pigé le problème. Je faisais la même faute à mes tout début entre php et html. Ici c'est entre php et sql. "SELECT" n'étant PAS une commande php, pour pouvoir être exécutée il faut un truc qui en fasse quelque chose de compréhensible pour lui et c'est le role de "mysqli".

Le problème que j'ai est le suivant

Comment utiliser une requête préparée avec MATCH ?

Le code

Code : Tout sélectionner

$stmt = mysqli_prepare($bdd, "SELECT adresse FROM groupes_index WHERE groupe LIKE ?");
Fait ce que je veut mais avec un seul mot provenant d'un formulaire de recherche et qui remplace le "?" grace à

Code : Tout sélectionner

mysqli_stmt_execute($stmt, [$_GET["Mot"]]);
D'après mon expérience "AGAINST ?" ne fonctionne pas.
Que doit-on écrire pour que

Code : Tout sélectionner

$stmt = mysqli_prepare($bdd, "SELECT adresse FROM groupes_index WHERE MATCH(groupe) AGAINST ?");
fonctionne ?

Avatar du membre
Mammouth du PHP | 1564 Messages

10 juil. 2025, 19:21

Passe en résolu et ouvre un nouveau sujet stp pour demander comment fonctionne mysqli_prepare et AGAINST.