[RESOLU] Erreur de requête

Eléphant du PHP | 65 Messages

14 déc. 2021, 16:18

Bonjour,
J'ai un problème dans ma requête qui ne marche pas. C'est pour la barre de recherche.
J'ai l'erreur suivante: "Erreur dans la requête SELECT A.* ,C.id, C.nom_fr AS nom FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE..."
Voici le code:

Code : Tout sélectionner

function getSearch($q, $id_categorie, $villes){ global $bdd; $sql_lang = (!empty(($_SESSION['lang']) && in_array($_SESSION['lang'], ['fr','en','es']) ))? $_SESSION['lang'] : 'fr'; $res = []; $sql = 'SELECT A.* ,C.id, C.nom_'.$sql_lang.' AS nom FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE (A.titre LIKE "%'.$q.'%" OR nom LIKE "%'.$id_categorie.'%" OR A.ville LIKE "%'.$villes.'%" ) ORDER BY created_date DESC'; try { $req = $bdd->prepare($sql); $req->execute(); $res = $req->fetchAll(PDO::FETCH_ASSOC); } catch (Exception $e) { echo "Erreur dans la requête " . $sql; } // le temps des tests pour voir le résultat return $res; }
A savoir que

Code : Tout sélectionner

$id_categorie= isset($_GET['categorie'])? trim($_GET['categorie']) : null;

Mammouth du PHP | 2703 Messages

14 déc. 2021, 18:30

que dit phpmyadmin quand la requête entière y est exécutée ?

Eléphant du PHP | 65 Messages

14 déc. 2021, 19:29

que dit phpmyadmin quand la requête entière y est exécutée ?
Bonjour or1, le soucis c'est que phpmyadmin a sa propre syntaxe pour les requêtes. De plus comment-faudrait-il faire $sql-lang?

Mammouth du PHP | 2703 Messages

14 déc. 2021, 19:57

"J'ai l'erreur suivante: "Erreur dans la requête SELECT A.* ,C.id, C.nom_fr AS nom FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie WHERE...""

donc la requête à copier/coller dans phpmyadmin s'affiche bien. et phpmyadmin permet d'exécuter la requete que l'on veut.
ou sinon, https://www.php.net/manual/fr/pdostatem ... orinfo.php

Eléphant du PHP | 65 Messages

14 déc. 2021, 22:41

D'accord je vois, il fallait que j'enlève les "=" pour voir ce que ça donne dans phpmyadmin. Merci or1 :)