Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/02/2011, 22h45   #1
Invité de passage
 
Inscription : février 2011
Messages : 1
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 1
Points : 0
Points : 0
Par défaut Effectuer une requête MySQL avec dans la clause WHERE une fonction de champ

Bonjour,
voici mon problème.
J'ai une table de données avec des noms de livres avec accents et signes de ponctuation.
Pour rendre les URLs des pages d'affichages des notices de chaque livre, j'ai créé une fonction stripAcc qui transforme par exemple L'extrême-Orient en L-extreme-orient. Elle fonctionne bien, mais je voudrais pouvoir, en appelant l'URL / Livre/L-extreme-Orient, récupérer dans la table MySQL les données concernant L'extrême-Orient.

Code php :
$query = "SELECT * FROM bio, editeur, ouvrage WHERE ouvrage.idediteur=editeur.idediteur AND stripAcc(ouvrage.titre)=".$_GET["titre"].";
Cela ne marche pas,pouvez-vous m'aider ?
Merci d'avance !!
admiralty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 09h18   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 990
Points : 18 241
Points : 18 241
Envoyer un message via MSN à CinePhil
1) Évite la guerre des étoiles !

2) Les jointures s'écrivent de façon normalisée depuis 1992 avec l'opérateur JOIN.

3) Tu as 3 tables dans le FROM et une seule condition de jointure dans le WHERE. Il y aura donc un produit cartésien des deux tables jointes avec la table bio, ce qui n'est pas performant et peut donner des résultats faux par rapport à ce que tu attends.

4) Mettre directement $_GET['titre'] dans ta requête ne te protège pas contre les injections SQL

5) Il faut entourer la variable php par des apostrophes puisque sa valeur est textuelle.
Code php :
"stripAcc(ouvrage.titre) = '".$_GET['titre']."'";

5)
Citation:
Cela ne marche pas
Symptômes ?
- Pas de résultat ?
- Mauvais résultat ?
- Message d'erreur ?
- L'ordi veut s'échapper par la fenêtre devant cette mauvaise requête ?

Citation:
j'ai créé une fonction stripAcc
En SQL ou en PHP ?
Perce que si tu utilises une fonction PHP dans une requête SQL, ça ne risque pas de fonctionner !

Citation:
pouvez-vous m'aider ?
Oui si tu nous donnes plus de précisions.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h09.


 
 
 
 
Partenaires

Hébergement Web