Bueno he decidido publicar una clase que me ha sido muy útil durante mucho tiempo, hasta que descubrí las bondades de la Extensión MySQL mejorada incluida en la versión 4.1 del lenguaje. Obviamente si ya utilizáis mysqli no os aportará mucho, pero seguro que a alguien le sirve y le sabe sacar provecho. |
El funcionamiento es bastante sencillo, pero por si acaso al final del código os dejaré un ejemplo de como usarla. Espero que os sirva de ayuda. Un saludo.
servidor = $servidor; $this->usuario = $usuario; $this->password = $password; $this->basedatos = $basedatos; } //Función de conexión private function conectar(){ $this->conexion = mysql_connect($this->servidor,$this->usuario,$this->password) or DIE(mysql_error()); mysql_select_db($this->basedatos, $this->conexion); } public function desconectar(){ mysql_close($this->conexion); } public function dameQuery($query){ $this->conectar(); $res = mysql_query($query) or die (mysql_error()); $this->desconectar(); return $res; } public function dameQuerySinCerrar($query){ $this->conectar(); $res = mysql_query($query) or die (mysql_error()); return $res; } public function dameQuerySinAbrir($query){ $res = mysql_query($query) or die (mysql_error()); $this->desconectar(); return $res; } public function dameQuerySinAbrirCerrar($query){ $res = mysql_query($query) or die (mysql_error()); return $res; } static public function getInstancia($servidor,$usuario,$password,$basedatos) { if (self::$instancia == NULL) { self::$instancia = new db($servidor,$usuario,$password,$basedatos); } return self::$instancia; } public function mysql_escape_string($var){ $this -> conectar(); $result = mysql_escape_string($var); $this -> desconectar(); return $result; } } ?>
Aquí os dejo un ejemplo de como listar datos de una tabla de vuestra base de datos.
dameQuery("SELECT * FROM clientes"); while($cliente = mysql_fetch_array($result)){ echo $cliente['nombre']." ".$cliente['apellidos']." ".$cliente['email']; } ?>
Hola, una sugerencia, debes especificar el constructor como private y especificar tu mismo los datos de conexion en el constructor a fin de no pasar parametros desde getInstancia($servidor,$usuario,$password,$basedatos), tu intención en el ejemplo parece un singleton muy a tu manera
La idea es no tener una clase distinta para cada base de datos a la que se necesite conectar.