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 :

La syntaxe !mysql_query est-elle correcte ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut La syntaxe !mysql_query est-elle correcte ?
    Est ce que la syntaxe !mysql_query (mysql_query précedé d'un point d'interrogation) est correcte ?

    Comme dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php if (!mysql_query("SELECT * FROM mes_params", $connexion)) {
    ......; } else {....;};?>
    ou doit-on absolument faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $result = mysql_query('SELECT * FROM mes_params');
    if (!$result) {
        die('Requête invalide : ' . mysql_error());
    }
     
    ?>
    Merci à tous

  2. #2
    Membre du Club Avatar de Atikae
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 56
    Points
    56
    Par défaut
    mysql_query() retournera une ressource en cas de succès, ou FALSE en cas d'erreur.
    Donc oui, théoriquement c'est possible.
    D'ailleurs tes deux exemples reviennent au même.

  3. #3
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    y'a quand même une différence, c'est que dans le premier cas tu ne peux pas exploiter les résultats de ta requête puisque tu n'affectes la ressource à aucune variable.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    Alors le souci doit être autre

    Dans une page j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php if (!mysql_query("SELECT * FROM mes_params", $connexion)) {//je crée la table mes params
    ......; }?>
    Elle n'existe pas donc elle est bien crée. Je verifie, c'est OK

    Je passe sur une seconde page

    je refais ma connexion avec un mysql_pconnect
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php if (!mysql_query("SELECT * FROM mes_params", $connexion)) { echo" Faire la mise à jour";} else {echo 'Rien à faire';};?>
    et j'ai systématiquement Faire la mise à jour qui s'affiche...

    Qu'aurais-je oublié ?

  5. #5
    Membre du Club Avatar de Atikae
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 56
    Points : 56
    Points
    56
    Par défaut
    Essaye de rajouter or die(mysql_error()); après ton mysql_query, pour voir quel est l'erreur.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Bonjour,
    vous avez théoriquement besoin du résultat d'un SELECT, sinon celui-ci est inutile sauf s'il est contenu dans une sous-requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
     
      if (!mysql_connect('localhost', 'pseudo', 'mdp') || !mysql_select_db('base')) die(mysql_error());
     
      if (!$res = mysql_query('SELECT * FROM `mes_params`')) die(mysql_error());
     
      mysql_close();
     
      // vous pouvez même réunir les trois
     
      if (!mysql_connect('localhost', 'pseudo', 'mdp') 
       || !mysql_select_db('base') 
       || !$res = mysql_query('SELECT * FROM `mes_params`'))
       die(mysql_error());
     
      mysql_close();
     
    ?>
    Cordialement,
    DaRiaN.

  7. #7
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    si tu veux tester l'existence d'une table tu peux aussi faire une requête de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function tableExists($name){	
    	if ($res = mysql_query("SHOW TABLES FROM base") or die(mysql_error())){
    		while($item = mysql_fetch_array($res)){
    			if ($name == $item [0])
    				return true;
    		}
    		return false;
    	}
    }

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    Après quelques tests, je constate différents comportements selon les serveurs.

    Après création de la table cdt_params, dans une page creation.php, je reviens dans une page menu.php contenant le code ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include('../Connections/conn_cahier_de_texte.php'); 
    if (!$res = mysql_query('SELECT * FROM `cdt_params`')){ echo " Base de données à mettre à jour</p>";} else {echo 'OK';};
    La table étant existante, nous devons donc avoir affichage de OK
    Avec un Apache Easyphp local pas de problème.(affichage instantané de OK)
    Avec un serveur distant (académie de Caen), nécessité d'actualiser le navigateur pour que s'affiche mon OK (peut mieux faire... )
    Avec le serveur de Free, s'affiche Base de données à mettre à jour systématiquement. (Ben ça alors !!) Une déconnexion, fermeture du navigateur n'y fait rien...

    Je sens les septiques... la table est bien existante, la connexion correcte

    Je reprends donc ma question de départ
    Le test ci-dessous est-il correct?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!$res = mysql_query('SELECT * FROM `cdt_params`')){ echo " Base de données à mettre à jour</p>";} else {echo 'OK';};

    Avant de me retourner sur la fonction donnée dans dans le post ci-dessus, je voudrais comprendre.

    Merci pour votre aide

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Je viens de tester chez free, ce script fonctionne très bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
      if (!mysql_connect('localhost', 'pseudo', 'pass')
       || !mysql_select_db('base')) die(mysql_error());
     
      if (!$res = mysql_query('SELECT * FROM `cdt_params`')) echo 'La table n\'exite pas.';
      else echo 'La table existe.';
     
    ?>
    La première fois, la table n'existe pas alors le script affiche : la table n'existe pas. Puis, un fois la table créée, celui-ci affiche : la table existe.

    Edit: si vous oubliez de sélectionner la base de données, cela retourne toujours : la table n'existe pas.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    Effectivement en rajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_select_db( $database_conn_cahier_de_texte, $conn_cahier_de_texte);
    tout fonctionne maintenant !

    Je pensais que mon include de debut de page contenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     $conn_cahier_de_texte = mysql_pconnect($hostname_conn_cahier_de_texte, $username_conn_cahier_de_texte, $password_conn_cahier_de_texte) or die(mysql_error());
    aurait été suffisant !
    Connection n'est pas sélection ??

  11. #11
    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
    Citation Envoyé par pierre50 Voir le message
    Connection n'est pas sélection ??
    Eh non ! Suppose que tu ais deux bases de données. A aucun moment dans la fonction pconnect n'est précisé le nom de la base de données. Si tu ne fais que la connexion, comment veux-tu que ton appli sache à laquelle des deux tu veux te connecter ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. Ma syntaxe est-elle correcte ?
    Par Christophe S. dans le forum Langage
    Réponses: 4
    Dernier message: 16/12/2008, 20h53
  2. [DTD simple] Est-elle correcte ?
    Par FenX. dans le forum Valider
    Réponses: 1
    Dernier message: 21/08/2007, 09h47
  3. Ma requête est-elle correcte?
    Par nicotine002 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 15/12/2006, 16h58
  4. cette requête est-elle correcte?
    Par spilliaert dans le forum Requêtes
    Réponses: 1
    Dernier message: 02/02/2006, 22h33
  5. Syntaxe est-elle correcte
    Par Silvia12 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 18/07/2005, 12h21

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