JeuWeb - Crée ton jeu par navigateur
Problème de Connexion - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Problème de Connexion (/showthread.php?tid=4716)



Problème de Connexion - Ksama - 08-04-2010




RE: Problème de Connexion - julp - 08-04-2010

Serait-ce le bug de mysql_close sans paramètre ?


RE: Problème de Connexion - Ksama - 08-04-2010

Merci, c'est bien sa =)
J'ai mis :
Code PHP :
<?php 
mysql_close
($base);

A la place de :
Code PHP :
<?php 
mysql_close
();

Pour qu'il sache quelle connexion fermer. Merci pour ton lien julp =)
Je passe en résolu


RE: Problème de Connexion - Anthor - 09-04-2010

D'autant qu'il est inutile de le mettre, car la connexion est fermée de façon implicite.

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


RE: Problème de Connexion - php_addict - 09-04-2010

(09-04-2010, 03:32 PM)Anthor a écrit : D'autant qu'il est inutile de le mettre, car la connexion est fermée de façon implicite.

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

oui mais c'est quand meme plus propre...


RE: Problème de Connexion - Sephi-Chan - 09-04-2010

Explique en quoi c'est plus propre ? L'explicite n'est pas forcément meilleur que l'implicite… C'est le cas quand on on perd en lisibilité et dans certains cas pour les performances.


Sephi-Chan


RE: Problème de Connexion - Anthor - 09-04-2010

C'est tellement plus propre, que le script plantait... ^^


RE: Problème de Connexion - Daynos - 09-04-2010

Sinon on peut définir une fonction qui ferme proprement de façon implicite, via register_shutdown_function ()

En passant, je vous mets une version allégée d'une classe que j'utilise depuis des années pour mes sites, qui a subit des mises à jour mineure mais qui mériterait un gros lifting pour la passer en PDO. Pensez à définir les constantes "SECURITE" (constante qui doit juste être définie, peu importe ce qu'il y a dedans), SQL_HOST, SQL_USER, SQL_PASS (pas besoin d'expliquer, non ?)

Code PHP :
<?php defined('SECURITE') OR die('Accès direct non autorisé');

class
Db {
//Lien MySQL vers la base
private $link=NULL;

// Constructeur
function __construct () {
// Se connecter automatiquement à la base du site à l'instanciation de l'objet db
if (is_null ($this->link) || !is_resource ($this->link)) {
$this->connect ();
}
}

// Récupérer le lien MySQL vers la base du site
public function getLink () {
return (!
is_null($this->link) && is_resource ($this->link)) ? $this->link : NULL;
}

// Se connecter à la base du site
public function connect () {
if (
is_null($this->link) || !is_resource ($this->link)) {
$this->link = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS);
}

if (!
is_resource ($this->link))
exit (
__FILE__."[".__LINE__."] : link n'est pas une resource.");

// Sélection de la base
mysql_select_db ($_SERVER['SQL_DB'], $this->link) or exit (mysql_error ($this->link));

register_shutdown_function (array ($this, "deconnect"));
}

// Se déconnecter de la base
public function deconnect () {
if (
is_resource($this->link)) {
mysql_close ($this->link) or exit (mysql_error ($this->link));
}
}

// Requête
public function query ($query) {
// Inutile d'exécuter des requêtes vides...
if (empty ($query)) {
return
NULL;
}

// SECURITE sur UPDATE et REPLACE : obligation d'avoir une clause "WHERE"
if (ereg("UPDATE|REPLACE", $query) && !ereg("WHERE", $query)) {
return
NULL;
}

// Vérifier que le lien est bon
if (!is_resource ($this->link)) {
return
NULL;
}

// Si toutes les vérifications sont OK
return mysql_query ($query, $this->link);
}

}


?>