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 :

Impossible d'exécuter une requête [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut Impossible d'exécuter une requête
    Bonjour à tous,

    Par un formulaire, je saisis 2 variables.

    Ensuite, après avoir valider, je suis renvoyé vers la page où doit s'exécuter la requête.

    Donc, sur cette page, je vérifie si les 2 saisies du formulaire ne sont pas vides.
    Apparemment, le test se fait bien.

    Mais où intervient le problème, c'est à l'exécution de la requête qui ne se fait pas, bien que le formulaire soit bien rempli.
    J'ai toujours le même message que si la saisie était vide.

    Par contre
    , si je désactive complètement la procédure de test, l'enregistrement se fait bien

    Je mets le code pour que vous puissiez vous rendre compte.
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <?php
    require_once('../config/config_inc.php');
    $nombase = "test_rech";
    $nomtable = "test_rech";
    $lien = mysql_connect($host,$user,$password) or die('Erreur de connexion : ' . mysql_error() . ""); 
    mysql_select_db($nombase,$lien) or die ('Erreur de connexion base : ' . mysql_error() . ""); 
    $sql = mysql_query("SELECT * FROM $nomtable LIMIT 0, 30") or die('Erreur de la requête : ' . mysql_error() . ""); 
    echo '<fieldset>';
    echo '<legend>Mise à jour de mots-clés de la table <strong>', $nomtable ,'</strong></legend>';
     
    if (
    	(isset($_POST['url']) && !empty($_POST['url'])) && 
    	(isset($_POST['motscles']) && !empty($_POST['motscles']))
       )
    {
    	$id = $_POST["id"] ;
    	$motscles = $_POST["motscles"] ;
     
    	$lien = mysql_connect($host, $user, $password) or die ('Erreur de connexion. ' . mysql_error() . ""); 
    	mysql_select_db($nombase,$lien) or die ('Erreur de connexion à la base. ' . mysql_error() . ""); 
     
          $requete = mysql_query("SELECT * FROM $nomtable WHERE id=$id");
          $reponse = mysql_fetch_array($requete);
          $contenu_actuel = $reponse['motscles'];
          $nouveau_contenu = $contenu_actuel.$motscles;
     
    	mysql_query("UPDATE $nomtable SET motscles = '$nouveau_contenu' WHERE id=$id"); 
     
    		echo 'Base : <strong>', $nombase ,'</strong> <br /> Table : <strong>', $nomtable ,'</strong>';
    		echo 'ID modifié : <strong>', $id ,'</strong> <br />';
    		echo 'Titre : <strong>', $reponse ,'[titre]</strong> <br /><br />';
    		echo 'Nouveaux mots clés enregistrés : <br /><strong>', $nouveau_contenu ,'</strong><br /><br />';
     
    		echo '</fieldset>';
    		echo '<br /><br />';
    		echo '[ <a href="javascript:history.go(-1)">Retour page précédente</a> ]';
    		echo '<br /><br />';
    		echo '<form method="post" action="../choix.html">';
    		echo '<input type="submit" name="choix" value="Retour au choix" style="cursor:pointer">';
    		echo '</form>';
     
    }
    else 
    {
    echo '<span style="color:red;font-weight:bold;">Veuillez remplir tous les champs SVP !</span>';
    echo '<br /><br />';
    echo '[ <a href="javascript:history.go(-1)">Retour page précédente</a> ]';
    echo '<br /><br />';
    }
    mysql_close();
    ?>
    J'espère vivement que vous trouverez ce qui colle pas, parce que j'avais plusieurs modifications, mais j'avais toujours des erreurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in G:\SiteQI98\exemples_forum\moteur_recherche_admin\update\update.php on line 32
    C'est au niveau de "$reponse = mysql_fetch_array($requete);" que ça se passe.

    Merci de votre aide.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Par défaut
    Le problème vient de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = mysql_query("SELECT * FROM $nomtable WHERE id=$id");
    Pour vérifier la requête, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "SELECT * FROM $nomtable WHERE id=$id";
    Pour information, injecter dans des requêtes des données provenant de $_POST ou $_GET constitue une faille de sécurité potentielle pour un programme.
    Pour éviter cela, tu peux utiliser la fonction mysql_escape_string.

  3. #3
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Citation Envoyé par jeremya Voir le message
    Pour vérifier la requête, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "SELECT * FROM $nomtable WHERE id=$id";
    C'est beau tout ça, mais je ne vois pas le rapport. Tu sais très bien qu'en faisant ça, je vais afficher le nom de la table et l'ID sélectionné dans le formulaire.
    En clair, je n'en voit pas l'intérêt !...

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    On ne "manipule" pas MySQL via du code PHP .
    MySQL est un gestionnaire de bases de données et possède, pour la "manipulation des données" d'une base, des outils et un langage prévus à cet effet : le SQL !

    Et justement, ton problème vient très certainement de cette confusion que tu fais.
    Jeremya a parfaitement raison de faire faire un echo. Dans un code PHP où échoue une requête, c'est la première des vérifications à faire. Ca permet de vérifier la requête qu'on obtient, de pouvoir l'exécuter dans un client MySQL, pour diagnostiquer si le problème est un problème de SQL ou de PHP...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Citation Envoyé par ced Voir le message
    Jeremya a parfaitement raison de faire faire un echo. Dans un code PHP où échoue une requête, c'est la première des vérifications à faire. Ca permet de vérifier la requête qu'on obtient, de pouvoir l'exécuter dans un client MySQL, pour diagnostiquer si le problème est un problème de SQL ou de PHP...
    Bonjour,

    Je me doute bien que Jeremya a raison, mais le problème n'est pas de faire une vérification.
    J'ai quand même essayé mais elle me donne que seulement le nom de la table et l'ID saisi dans le formulaire, c'est pour ça que je voyais pas l'intérêt de faire comme ça.

    Pour infos, la requête s'exécute bien SI, et je dis bien SI, aucune vérification de la saisie du formulaire n'est faite.
    Mais dès que je vérifie, plus de requête...

    Donc, il y a certainement un problème entre 'la vérification" et "l'exécution", mais je ne vois pas d'où ça.

    J'ai essayé d'intervertir "vérification" et "requête", mais c'est encore pire.

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Pour infos, la requête s'exécute bien SI, et je dis bien SI, aucune vérification de la saisie du formulaire n'est faite.
    Mais dès que je vérifie, plus de requête...
    Si la requête fonctionne correctement, "MySQL n'y est pour rien" et c'est un problème de script PHP (vérification d'un formulaire).

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

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

Discussions similaires

  1. [SQL-Server] Impossible d'exécuter une requête
    Par Cyanatide dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/03/2013, 09h48
  2. Réponses: 2
    Dernier message: 08/03/2012, 13h28
  3. Impossible d'exécuter une requête
    Par abir_rzg dans le forum Bases de données
    Réponses: 5
    Dernier message: 08/11/2009, 16h07
  4. [CR XI] Impossible d'exécuter une requête SQL
    Par staika dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/08/2009, 10h32
  5. MySQL 5 : Impossible d'exécuter une requête
    Par SebastienM dans le forum Requêtes
    Réponses: 3
    Dernier message: 05/11/2007, 18h18

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