Variable php / requête SQL dynamique
Résolu
vanzielle
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
vanzielle Messages postés 16 Date d'inscription Statut Membre Dernière intervention -
vanzielle Messages postés 16 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voila j'ai un peu de temps libre et je me suis dit que j'allais réinventer la roue. (oui je sais ça sert pas a grand chose hormis se prendre la tête et faire travailler les ptits neurones) Seulement il y a un hic...
Je cherche a créée une requête SQL dynamique. Pour cela j'utilise des variables php qui changent de valeur en fonction du choix de l'utilisateur, ce qui aura pour effet de modifier la requête SQL.
Les exemples étant souvent plus parlant voici ce que j'aimerai obtenir:
SELECT nom FROM bluray WHERE nom LIKE 'A%' ORDER BY nom ASC
SELECT nom FROM bluray WHERE nom LIKE 'B%' ORDER BY nom ASC
SELECT nom FROM bluray WHERE nom LIKE 'C%' ORDER BY nom ASC
....
Voici ce que j'obtient:
SELECT nom FROM bluray WHERE nom LIKE \'A%\' ORDER BY nom ASC
Je n'arrive pas (et c'est pas faute d'avoir chercher) à supprimer ces fichus '\' qui empêchent ma requête de fonctionner normalement. A tout les coups ça doit être un truc de base que j'ai zappée ou que je ne connais pas encore.
Voici mon bout de code qui s'occupe de cela:
Voila pour le bout de code concernée.
Merci par avance pour votre aide.
Voila j'ai un peu de temps libre et je me suis dit que j'allais réinventer la roue. (oui je sais ça sert pas a grand chose hormis se prendre la tête et faire travailler les ptits neurones) Seulement il y a un hic...
Je cherche a créée une requête SQL dynamique. Pour cela j'utilise des variables php qui changent de valeur en fonction du choix de l'utilisateur, ce qui aura pour effet de modifier la requête SQL.
Les exemples étant souvent plus parlant voici ce que j'aimerai obtenir:
SELECT nom FROM bluray WHERE nom LIKE 'A%' ORDER BY nom ASC
SELECT nom FROM bluray WHERE nom LIKE 'B%' ORDER BY nom ASC
SELECT nom FROM bluray WHERE nom LIKE 'C%' ORDER BY nom ASC
....
Voici ce que j'obtient:
SELECT nom FROM bluray WHERE nom LIKE \'A%\' ORDER BY nom ASC
Je n'arrive pas (et c'est pas faute d'avoir chercher) à supprimer ces fichus '\' qui empêchent ma requête de fonctionner normalement. A tout les coups ça doit être un truc de base que j'ai zappée ou que je ne connais pas encore.
Voici mon bout de code qui s'occupe de cela:
if ($_POST['like']) { $fsql = $_POST['like']; } [...] $val = "WHERE nom LIKE '" . $foo[$i] . "%'"; ?> <input type="hidden" name="like" value="<?php echo $val ?>"/> <?php [...] $sql = "SELECT nom FROM bluray " . $fsql . " ORDER BY nom ASC";
Voila pour le bout de code concernée.
Merci par avance pour votre aide.
A voir également:
- Variable php / requête SQL dynamique
- Tableau croisé dynamique - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Easy php - Télécharger - Divers Web & Internet
- Liste déroulante dynamique excel - Guide
- Sommaire dynamique word - Guide
2 réponses
Salut, je pense que c'est parce que ta variable est envoyé via un formulaire, je pensais que ça faisait ça en get mais en post aussi apparement. Y a une fonction qui enleve les caracteres d'échappement, mais j'ai plus le nom en tête mais ça reviens a faire ça dans ton isset:
Mais au lieu str_replace il faudrait utiliser la fonction adéquate.
Edit: Mais c'est pas un isset lol.
if ($_POST['like']) { $fsql = str_replace('\\','',$_POST['like']); }
Mais au lieu str_replace il faudrait utiliser la fonction adéquate.
Edit: Mais c'est pas un isset lol.
Merci pour ta réponse je vais essayer de retrouver cette fameuse fonction.
Edit:
Ta solution marche très bien.
Pour la fonction je l'ai retrouvée, il s'agit de stripslashes();
Edit:
Ta solution marche très bien.
Pour la fonction je l'ai retrouvée, il s'agit de stripslashes();