Page 1 sur 1

Erreur mysql

Posté : 28 sept. 2009, 10:38
par damdam
Bonjour,
Je vous explique mon problème :
J'ai :
- index.php contenant principalement du html et des appels à des fonctions php
- fonctions.php qui stocke justement le corps de ces fonctions
- db.inc.php qui contient les credentials mysql.

aperçu de fonctions.php :
function db(){
	require_once("db.inc.php");
	$link = mysql_connect($server,$user,$pass);
        mysql_select_db($db,$link))
	return $link;
}
function toto1(){
    $link = db();  // on récupère la ressource mysql
   //traitement divers et requêtes vers la bdd
   toto2();
   mysql_close($link);
}
function toto2(){
    $link = db();  // on récupère la ressource mysql
   //traitement divers et requêtes vers la bdd
     mysql_close($link);
}
etc.
Or j'ai cette erreur suivante :
Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2) 
En cherchant j'ai vu que ca viendrai peut etre du fait que je me connecte 2 fois de suite à la bdd. Est-ce cela ?
Sinon, comment faire pour que mon code ne rappelle pas toujours l'ouverture de bdd ?

Merci de votre aide

Re: Erreur mysql

Posté : 28 sept. 2009, 10:48
par Berzemus
En utilisant l'objet, tu pourrais créer un singleton (un classe qui ne peut être instancié qu'une seule fois, toute nouvelle tentative d'instanciation renvoyant l'objet précédemment crée).


On en a parlé à divers endroits:

post305152.html?hilit=mysql%20singleton#p305152
post302629.html?hilit=mysql%20singleton#p302629

Re: Erreur mysql

Posté : 28 sept. 2009, 13:03
par damdam
Salut,
Merci pour ton conseil. J'ai donc construit ma classe mysqli en suivant le pattern singleton.
Mais j'ai toujours la meme erreur :

Code : Tout sélectionner

Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)
Une idée ?

Re: Erreur mysql

Posté : 28 sept. 2009, 13:30
par damdam
En fait l'erreur c'est plutot :
require_once("db.class.php");
$mysql = mysql::getInstance();
var_dump($mysql);
$res = $mysql->query("SELECT * from latable");
var_dump($res);
renvoie :
object(mysql)#1 (1) {
  ["objMysqli:private"]=>
  object(mysqli)#2 (0) {
  }
}
// et
NULL
Ma méthode query :
	
public function query($sql){
      return mysqli_query($this->objMysqli, $sql);
}
Le problème est que $res me renvoie NULL, pourquoi ?!

Re: Erreur mysql

Posté : 28 sept. 2009, 15:47
par Berzemus
Qu'est-ce qui se trouvait dans la variable $server ? Manifestement, quelque chose n'arrive pas à se connecter à autre chose.
Vers quel serveur essaies-tu de te connecter ? Et en partant de ou ?

Re: Erreur mysql

Posté : 28 sept. 2009, 18:39
par damdam
$serveur contenant le nom du serveur mysql (localhost par exemple)
J'ai fait des tests et la connexion fonctionne bien avec ma classe mysqli singleton.
le problème c'est faire une requete :( il me renvoie NULL.

Re: Erreur mysql

Posté : 28 sept. 2009, 22:40
par Berzemus
Un résultat de requête mysql ne s'exploite pas tel quel. Tu as regardé du côté des mysql_fetch_assoc() et consœurs ?

Re: Erreur mysql

Posté : 28 sept. 2009, 22:53
par Invité
Jai résolu mon problème.
J'appelais mal la méthode query() de mysqli :s
@+