El archivo es el siguiente:
Código PHP:
Ver original
<?php class bbdd{ private $link; //resource de la conexion private $debug; //Bool para mostrar trazas o no. private $server; //Servidor de la bbdd private $baseDeDatos; //Nombre de la bbdd private $usuario; //Usuaro de la bbdd private $password; //Password del usuario de la bbdd /*Cuando inicializamos la clase por defecto coge los parametros de un archivo de configuracion con un array $conf = array() con las asociaciones de servidor,baseDeDatos,usuario,contrasena ademas de poder inicializar el debug en true para hacer la traza de lo que va haciendo la clase*/ public function bbdd($debug=false,$server = '',$baseDeDatos = '',$usuario = '',$password = ''){ global $conf; $this->debug = $debug; if($server!='') $this->server = $server; else $this->server = $conf['servidor']; if($baseDeDatos!='') $this->baseDeDatos = $baseDeDatos; else $this->baseDeDatos = $conf['baseDeDatos']; if($usuario!='') $this->usuario = $usuario; else $this->usuario = $conf['usuario']; if($password!='') $this->password = $password; else $this->password = $conf['contrasena']; $this->conectar(); } private function conectar(){ if($this->debug) echo '<p>Ya tenemos una conexion abierta</p>'; return true; } $this->password, $this->baseDeDatos); if($this->debug) echo "<p>Error al conectar a la BBDD.</p>"; return false; $this->desconectar(); if($this->debug) echo "<p>Error al seleccionar la tabla.</p>"; return false; } if($this->debug) echo '<p>Nos hemos conectado a la bbdd.</p>'; return true; } public function desconectar(){ if($this->debug) echo "Estas intentando cerrar una conexion que no esta abierta. desconectar() bbdd"; return false; }else{ if($this->debug) echo '<p>Cerramos la conexion.</p>'; } } private function sentencia($sql){ if($this->debug) echo "<p>La sentencia es: $sql</p>"; if($this->debug) echo "Error al ejecutar la sentencia: $sql"; return false; } return $result; } /* Ejecuta una sentencia SQL */ public function ejecutarSQL($sql){ if($this->conectar()){ if($this->sentencia($sql)) return true; else return false; } return false; } /*Recorre el result de una sentencia SQL y la almacena en un array que devuelve.*/ private function recorrerSentencia($result){ $array[] = $row; return $array; } /*Devuelve un array con los rows de la consulta,ejemplo: $users = obtener("SELECT nombre, correo FROM users"); $users[<num_row>][<nombre_campo>];*/ public function obtener($sql){ if($this->conectar()){ $result = $this->sentencia($sql); if($result) $array = $this->recorrerSentencia($result); else return false; return $array; } return false; } private function crearSQL2($tabla,$nombresCampo,$valores){ if($valores[$x]!='NULL' && $valores[$x]!='NOW()') $valores[$x] = "'".$valores[$x]."'"; $sql = "INSERT INTO $tabla ($stringNombres) VALUES ($stringValores);"; return $sql; } private function crearSQL($tabla,$valores){ if($valores[$x]!='NULL' && $valores[$x]!='NOW()') $valores[$x] = "'".$valores[$x]."'"; $sql = "INSERT INTO $tabla VALUES ($stringValores);"; return $sql; } /*ejemplo: insertar("users",array('NULL','pepe','Alicante',......)); devuelve el id autonumerico si es un insert autonumerico.*/ public function insertar($table,$valores){ $sql = $this->crearSQL($tabla,$valores); if($this->conectar()) if($this->sentencia($sql)) else return false; else return false; } /*ejemplo: insertar2("users",array(nombre,correo),array('Pepe','[email protected]')); /devuelve el id creado al insertarlo*/ public function insertar2($tabla,$nombresCampo,$valores){ $sql = $this->crearSQL2($tabla,$nombresCampo,$valores); if($this->conectar()) if(sentencia($sql)) else return false; return false; } /*Cuando terminamos el script desconectamos la conexion si no se ha desconectado ya.*/ function __destruct(){ $this->desconectar(); } /*Funcion que imita a la funcion mysql_real_escape_string de mysql-php pero que no necesita de una conexion abierta.*/ public function mysql_escape_mimic($cadena){ return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $cadena); } return $cadena; } public function setDebug($debug){ $this->debug = $debug; } } ?>
El funcionamiento de la libreria es bien simple, cuando quiero mostrar X datos:
Código PHP:
Ver original
$bbdd = new bbdd(); $usuarios = $bbdd->obtener('SELECT nombre FROM usuarios'); echo 'Usuario: '.$usuarios[$x]['nombre'].'<br />'; }
Cuando quiero hacer algun delete o update:
Ej: mandamos por POST el id del usuario a borrar al script.
Código PHP:
Para el update seria lo mismo.Ver original
$bbdd = new bbdd(); $idUser = $bbdd->mysql_escape_mimic($_POST['id']); $bbdd->ejecutarSQL('DELETE FROM usuarios WHERE id = "'.$idUser.'"');
Y cuando quiero insertar un nuevo usuario en la bbdd:
Código PHP:
//Si la tabla tuviera campos opcionales, y no quisieramos rellenarlos usariamos insertar 2 y le pasariamos los mismos parametros mas 1 que sea los campos de la tabla.Ver original
$bbdd = new bbdd(); $nombreUser = $bbdd->mysql_escape_mimic($_POST['nombre']);
Tambien agradeceria cualquier aporte similar a este al que pudierais ponerme algun link para verlo, da igual que este en ingles :)
Graaacias.