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 variable dans requête selon php.ini


Sujet :

PHP & Base de données

  1. #1
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut syntaxe variable dans requête selon php.ini
    Bonsoir,

    Voici 2 requêtes dans un script PHP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $a=mysql_query("select * from table where champ=$valeur");
     
    $b=mysql_query("select * from table where champ='".$valeur."'");
    Je cherche à savoir pourquoi $a fonctionne avec ma configuration en local(wamp, PHP version 5.2.3) mais pas sur mon serveur ? $b fonctionne sur les deux.
    Quand je dis fonctionne, je veux dire que la requête ramènne quelque chose.
    Il y aurait un rapport avec le php.ini, si oui ou se trouve la paramètrage ?

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Que vaut le requete finale dans les deux cas ?

  3. #3
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Elle vaut 0 car j'ai des opérations mathématiques à effectuer dont une division et php me renvoi une erreur : Warning: Division by zero ...
    J'en déduit que la requête ne ramène rien ou 0 car quand je remplace $valeur par un nombre le script fontionne.

  4. #4
    Membre averti Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Points : 329
    Points
    329
    Par défaut
    Je pense que c'est la version de php(5.3 p-ê?), moi aussi quand je me suis remis il y peu à php(1 mois de ça) sur une nouvelle machine j'ai installé les dernières versions. Et effectivement j'ai été étonné que 'where champs=$toto' marché sans concaténation.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Un petit rappel sur les chaines de caractères : Apostrophes ou guillemets

    En fait la différence entre tes deux requêtes n'est pas dans la façon dont tu passes la variable, mais dans le fait que dans $a, la valeur n'est pas encadrée par des quotes alors qu'elle l'est dans $b. Si ton champ n'est pas de type INTEGER, $a ne devrait pas fonctionner.

  6. #6
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Citation Envoyé par Celira Voir le message
    Un petit rappel sur les chaines de caractères : Apostrophes ou guillemets

    En fait la différence entre tes deux requêtes n'est pas dans la façon dont tu passes la variable, mais dans le fait que dans $a, la valeur n'est pas encadrée par des quotes alors qu'elle l'est dans $b. Si ton champ n'est pas de type INTEGER, $a ne devrait pas fonctionner.
    Merci pour le lien

    INTEGER ou pas avec cette syntaxe on passe partout ? : '".$valeur?."'

    (Par contre c'est plus lent niveau process)

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    théoriquement le plus rapide est d'encadrer la chaine avec des quotes simples donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $c=mysql_query('select * from table where champ=\''.$valeur.'\'');
    Mais là, ça commence à être capilotracté...

  8. #8
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Bonsoir,

    Désolé de faire remonter ce post mais j'ai toujours le même problème.

    Cette requête est éxécutée en local (wamp) mais pas sur mon serveur de production. Les scripts en questions sont rigoureusement identiques : wamp et serveur prod.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $a=mysql_query("select * from table where champ='$valeur'");
    J'aimerais comprendre d'ou vient cette différence ?

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La question est toujours la meme, que donne la requete finale ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql = "select * from table where champ='$valeur'";
    echo $sql;
    mysql_query($sql);
    La requete affichée donne t'elle un resultat dans phpmyadmin ?

  10. #10
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Oui j'ai un résultat dans phpmyadmin, j'ai bien le résultat attendu.

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le probleme est donc dans la suite de ton code.

  12. #12
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Peut-être une piste pour moi :

    peut-on paramétrer le php.ini pour qu'il accepte les valeurs null ou non ?

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    De quoi parles-tu ?
    Un variable PHP peut toujours prendre une valeur NULL.

  14. #14
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    Un variable PHP peut toujours prendre une valeur NULL
    Oui.

    Je suis perdu. Comment expliquer qu'une requête passe sur un serveur mais pas un autre ?

    Le code n'a rien à voir, sinon la requête s'éxécuterait sur les 2 serveurs ?

  15. #15
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faudrait nous montrer ton code pour qu'on puisse te répondre.

  16. #16
    Membre actif Avatar de arthuro45
    Profil pro
    Développeur du dimanche
    Inscrit en
    Juillet 2009
    Messages
    602
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Juillet 2009
    Messages : 602
    Points : 265
    Points
    265
    Par défaut
    La page de code fait 3km.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    if (isset($_POST['enregistrer']))
    {
    $req1 = mysql_query("INSERT INTO table (valeur1, valeur2, valeur3, valeur4, valeur5, valeur6, valeur7,  valeur8, valeur9, valeur10, valeur11, valeur12,valeur13, valeur14, valeur15, valeur16, valeur17, valeur18, valeur19, valeur20) VALUES ('$valeur1', '', '$valeur3', '$valeur4', '$valeur5', '$valeur6', '', '$valeur8', '$valeur9', '$valeur10',  '', '', '', '', '', '', '', '1', '3000-12-31', '-1')");
    }
    ?>

Discussions similaires

  1. Variable JS dans requête SQL PHP
    Par miabi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/11/2010, 14h28
  2. Pb syntaxe : inclure variable dans requête HQL
    Par dassault73 dans le forum Hibernate
    Réponses: 1
    Dernier message: 11/04/2010, 23h12
  3. Variable dans Requête Vba Access
    Par dorschner dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/08/2006, 22h52
  4. [MySQL] Introduire une variable dans requête SQL, insérer des données à la volée
    Par Ronan.f dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 29/04/2006, 23h10
  5. Réponses: 11
    Dernier message: 11/03/2005, 18h41

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