Problème base de donnée en php

Fermé
ne2sbeal Messages postés 36 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 28 juin 2010 - 3 août 2009 à 14:27
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 4 août 2009 à 10:15
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

5 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
3 août 2009 à 16:03
Bonjour,

Pourrais-tu poster ton code s'il te plait, sinon nous ne pourrons pas t'aider.
A mon avis tu tente d'effectuer des requêtes SQL sur ta base de données après sa fermeture.

L'idéal lorsque tu as plusieurs requêtes à faire dans une même page, si ta conception te le permets bien sûr, c'est d'effectuer toutes les requêtes en début (plus ou moins) de page, de réceptionner les résultats dans des variables PHP, de fermer la connexion à ta base de données, puis ensuite d'interpréter là où tu le veux dans ta page, les résultats de tes requêtes.
0
ne2sbeal Messages postés 36 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 28 juin 2010
3 août 2009 à 16:30
<?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é !
?>
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
3 août 2009 à 17:06
Est-ce que ton erreur intervient dans ce bout de code :
// 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é !
?>


Si oui, peux-tu essayer d'ajouter une déclaration de ta variable $données juste avant ta boucle, comme ceci :
$donnees = null;
// 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é !
?>


Et regarde si ça change quelque chose.

Si ça ne change rien, essai d'écrire ton code comme ceci plutôt :
// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
 echo "<p><strong>".$donnees['pseudo']."</strong> : ".$donnees['message']."</p>";
}
// Fin de la boucle, le script est terminé !
?>


Et si le problème ne vient pas de ces lignes du tout, peux-tu donnre la ligne exact sur laquelle tu as ton erreur ?
0
ne2sbeal Messages postés 36 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 28 juin 2010
4 août 2009 à 07:59
j'avais fait un autre test avant sur un autre programme et la meme erreur apparaissait quand je fermais la base de donné avec le close
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
4 août 2009 à 10:15
Et quand est-il des instructions que je t'ai donné ? Je ne dis pas que c'est ça, mais joué les fatalistes ne résoudra pas ton problème non plus. Après, si tu ne veux pas y mettre du tiens, ne viens pas poster sur un forum d'entraide.
0