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 de fermer une base de donnée


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 101
    Points : 49
    Points
    49
    Par défaut Impossible de fermer une base de donnée
    Bonjour,

    Quand je souhaite travaillé sur une base de donnée en php et qu'à moment donné je ferme la base avec un "mysql_close();", je teste le code en local et je reçoit un message : "la memoire ne peut pas etre read"

    Je sais que c'est à ce niveau car si je travaille sur la base sans fermé la base à la fin il n'y a pas d'erreur.

    Merci de votre aide

  2. #2
    jnore
    Invité(e)
    Par défaut
    Salut

    Un petit bout de code serait le bienvenu !

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 101
    Points : 49
    Points
    49
    Par défaut
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <?php
    if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
    {
        if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
        {
            // D'abord, on se connecte à MySQL
            mysql_connect("localhost", "root", "");
            mysql_select_db("chat");
     
            // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
            $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
            $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
     
            // Ensuite on enregistre le message
            mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");
     
            // On se déconnecte de MySQL
            mysql_close();
        }
    }
     
     
    // Que l'on ait enregistré des données ou pas...
    // On affiche le formulaire puis les 10 derniers messages
     
    // Tout d'abord le formulaire :
    ?>
     
     
     
    <form action="chat.php" method="post">
     
    <p>
    Pseudo : <input type="text" name="pseudo" /><br />
    Message :  <input type="text" name="message" /><br />
     
    <input type="submit" value="Envoyer" />
    </p>
     
    </form>
     
     
     
    <?php
     
    // Maintenant on doit récupérer les 10 dernières entrées de la table
    // On se connecte d'abord à MySQL :
    mysql_connect("localhost", "root", "");
    mysql_select_db("chat");
     
    // On utilise la requête suivante pour récupérer les 10 derniers messages :
    $reponse = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 0,10");
     
    // On se déconnecte de MySQL
    mysql_close();
     
    // Puis on fait une boucle pour afficher tous les résultats :
    while ($donnees = mysql_fetch_array($reponse) )
    {
    ?>
     
    <p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
     
     
     
    <?php
    }
    // Fin de la boucle, le script est terminé !
    ?>

  4. #4
    jnore
    Invité(e)
    Par défaut
    Il te manque un paramètre sur la fonction mysql_close !
    Regarde ici:

    http://fr3.php.net/manual/fr/function.mysql-close.php

  5. #5
    jnore
    Invité(e)
    Par défaut
    Autant pour moi mais dans ton cas cela n'a pas l'air nécessaire!

  6. #6
    jnore
    Invité(e)
    Par défaut
    Par contre ta requete a une mauvaise syntaxe !
    On écrit une requete d'insertion avec cette syntaxe:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     mysql_query("INSERT INTO minichat (champ1, champ2, champ3) VALUES('', '$pseudo', '$message')");

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 101
    Points : 49
    Points
    49
    Par défaut
    le problème reste le meme :

    L'instruction à "0x00642072" emploie l'adresse mémoire "0x00000000". la mémoire ne peut pas etre "read"

  8. #8
    jnore
    Invité(e)
    Par défaut
    As-tu un numéro de ligne sur ton erreur?
    Fais un copier coller de celui puis mets le nous.

    Autre chose, quand tu fais cette requête "SELECT * FROM minichat ORDER BY ID DESC LIMIT 0,10" directement sur mysql, combien d'enregistrements te sont retournés ?
    Ta syntaxe sur le "LIMIT" me parait louche.

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 101
    Points : 49
    Points
    49
    Par défaut
    La fonction me retourne bien les 10 dernières entrées.

    Pour le numero de ligne il n'y en a pas, c'est une fenetre qui s'ouvre avec cette erreur.

  10. #10
    jnore
    Invité(e)
    Par défaut
    Si tu déplace ton mysql_close, est-ce que cela change quelquechose?

    Par ex:
    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
     
    <?php
     
    // Maintenant on doit récupérer les 10 dernières entrées de la table
    // On se connecte d'abord à MySQL :
    mysql_connect("localhost", "root", "");
    mysql_select_db("chat");
     
    // On utilise la requête suivante pour récupérer les 10 derniers messages :
    $reponse = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 0,10");
     
    // On se déconnecte de MySQL
     
     
    // Puis on fait une boucle pour afficher tous les résultats :
    while ($donnees = mysql_fetch_array($reponse) )
    {
    ?>
     
    <p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
     
     
     
    <?php
    }
     
    mysql_close();
     
    ?>

  11. #11
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 101
    Points : 49
    Points
    49
    Par défaut
    toujours pareil malheureusement

Discussions similaires

  1. Impossible d'ajouter une base de données à l'arborescence
    Par pat29 dans le forum Entreprise Manager
    Réponses: 0
    Dernier message: 09/12/2008, 18h45
  2. fermer une base de donnée
    Par ozerte dans le forum IHM
    Réponses: 2
    Dernier message: 13/10/2008, 18h33
  3. Impossible d'ouvrir une base de donnée
    Par anna1 dans le forum Access
    Réponses: 2
    Dernier message: 03/05/2006, 22h55
  4. [D7] DLL impossible de connecter à une base de données
    Par Magnus dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/09/2005, 14h47
  5. Impossible de fermer une base de données en lecture
    Par requiemforadream dans le forum ASP
    Réponses: 7
    Dernier message: 21/04/2005, 16h58

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