IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Syntaxe des requêtes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Par défaut Syntaxe des requêtes
    Bonjour,
    je commence à me poser des questions sur l'efficacité du code que j'utilise pour mes requêtes, je me tourne vers vous pour me dire si c'est possible de développer la syntaxe des requêtes.
    Par exemple pour chercher l’existence d'un enregistrement j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$result =mysql_query ("SELECT COUNT(*) AS nbr FROM Table WHERE id = $id  " );
    	$donnees = mysql_fetch_array($result);
    	$nbr = $donnees['nbr'] ;
    et pour trouver un enregistrement :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$reponse4 = mysql_query("SELECT Solde FROM Table WHERE id = $id  ");
    	$donnees4 = mysql_fetch_array ($reponse4);
    	$Solde = $donnees4['Solde'] ;
    est-ce la façon la optimisée ou bien il existe d'autre syntaxe plus évolués.
    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Pourquoi tu fais une requête liminaire pour voir s'il existe ?
    Quand un enregistrement ne retourne rien, ça ne provoque pas d'erreur, ce n'est pas un problème en soi, pas besoin de requête préalable.
    Tu peux directement lancer la seconde requête et en PHP, simplement tester le sizeof($donnees4) pour l'affichage.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Par défaut
    Bonjour,
    Merci Dendrite pour la remarque effectivement cela ne sert pas à grand chose dans mon cas.
    J'ai une autre question concernant une requête : j'aimerais rendre mon système multi-langues en mettant les traductions dans une table, est ce que la requête ci-dessous est le meilleure façon pour le faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $reponse4 = mysql_query("SELECT ENG FROM Table_langue WHERE id = 5  ");
    $donnees4 = mysql_fetch_array ($reponse4);
    $EXPRESSION5= $donnees4['ENG '] ;
    Merci pour votre aide

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Remarque sur tes exemples :

    1/ Dans une requête, on doit toujours protéger ses variables avec mysql_real_escape_string. Dans ton cas s'agissant d'un entier ce n'est pas nécessaire mais uniquement si tu as auparavant casté la variable $id en entier, sinon c'est un trou de sécurité majeur (injection sql).

    2/ Il est très pratique de séparer l'écriture de la requête de son exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $query = "SELECT Solde FROM Table WHERE id = $id  ";
    $reponse4 = mysql_query($query);
    Cela permet de faire afficher echo $query pour débugage plus simplement.

    3/ Normalement on fait un minimum des gestion des erreurs. Si pour une raison quelconque la requête échoue, les lignes suivantes ne devraient pas être exécutées sinon cela renverra des warning de tous côtés et une exécution aléatoire du reste du code. Donc par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $query = "SELECT Solde FROM Table WHERE id = $id  ";
    $reponse4 = mysql_query($query);
    if($reponse4 !== false)
    {
        $donnees4 = mysql_fetch_array ($reponse4);
        $Solde = $donnees4['Solde'] ;
        //...
    }
    4/ Pendant que tu as du temps pour réfléchir à ton code tu devrais t'intéresser à mysqli ou pdo (pdo recommandé car offre plus de facilités et plus universel, mysqli plus facile en venant de mysql). Le message avec le gros triangle d'avertissement dans toutes les doc sur les fonctions de l'extension mysql est là pour le rappeler.

    Enfin pour ta dernière question sur le multilingue il y a un sujet ressemblant ici

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/08/2014, 12h45
  2. [PDO] La syntaxe des requêtes préparées
    Par Le nettoyeur dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 24/02/2014, 13h44
  3. syntaxe des requète avec plusieurs enregistrements
    Par JeanNoel53 dans le forum Firebird
    Réponses: 2
    Dernier message: 10/01/2012, 16h35
  4. syntax des requêtes Sql selon les données à traiter
    Par pra3t0r dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/06/2011, 22h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo