- Desde
- 26 Ene 2010
- Mensajes
- 1.397
Hola amigos, hace un año programé esta clase para gestionar la BD en MYSQL y así poder realizar consultas de forma rápida y sencilla.
PD: La clase consta de 2 archivos, 1 de la propia clase en si (class.bd.php), y el otro con los datos de conexión: bd.php
Ejemplo de uso:
Usaremos una tabla sencilla, aquí el SQL:
Ejemplo.php
Imprime esto en pantalla:
Aquí el código de la clase (class.bd.php):
archivo bd.php
PD: La clase consta de 2 archivos, 1 de la propia clase en si (class.bd.php), y el otro con los datos de conexión: bd.php
Ejemplo de uso:
Usaremos una tabla sencilla, aquí el SQL:
Insertar CODE, HTML o PHP:
CREATE TABLE `persona` (
`id` int(3) NOT NULL,
`nombre` varchar(40) NOT NULL,
`dni` int(10) NOT NULL,
`celular` int(9) NOT NULL,
`edad` int(2) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Ejemplo.php
Insertar CODE, HTML o PHP:
<?php
require_once('class.bd.php');
$bd = new bd();
$bd->inicio();
$bd->query('truncate table persona'); //Eliminar todos los datos de la BD
$datos = array();
/* Insertamos datos en la BD */
$datos['id'] = (int)1; // Como el atributo ID en la tabla es INTEGER, forzamos a que la variable sea un numero.
$datos['nombre'] = "Juan Lopez";
$datos['dni'] = (int)46217213;
$datos['celular'] = (int)932649492;
$datos['edad'] = (int)20;
$sql = $bd->get_sql_insert($datos,"persona");
echo "1. ".$sql."<br />";
$rpta = $bd->query($sql); // QUERY usado para INSERT, UPDATE, TRUNCATE, etc. No se usa con SELECT.
$datos['id'] = (int)2;
$datos['nombre'] = "Maria Gabriela";
$datos['dni'] = (int)41654312;
$datos['celular'] = (int)955412343;
$datos['edad'] = (int)22;
$sql = $bd->get_sql_insert($datos,"persona");
echo "2. ".$sql."<br />";
$rpta = $bd->query($sql); // QUERY usado para INSERT, UPDATE, TRUNCATE, etc. No se usa con SELECT.
/* Actualizando datos */
unset($datos); //Volcamos en contenido en memoria
$datos['nombre'] = "Juan Perez Lopez";
$sql = $bd->get_sql_update($datos,"persona", "id = 1");
echo "3. ".$sql."<br />";
$rpta = $bd->query($sql);
/* Aumentando en 1 unidad el valor de una variable, utilizado para aumentar visitas */
unset($datos); //Volcamos en contenido en memoria
$datos['edad+'] = true; // Genera: edad = edad + 1:
$sql = $bd->get_sql_update($datos,"persona", "id = 1");
echo "4. ".$sql."<br />";
$rpta = $bd->query($sql);
/* Recuperando los registros en un array */
$sql = "select id, nombre, edad from persona";
$datos = $bd->wquery($sql);
//var_dump($datos);
if($datos!=null){ //Siempre se hace esta validación inicial
echo "<br /><table>";
echo "<head><tr><th>ID</th><th>NOMBRE</th><th>EDAD</th></tr></head>";
foreach($datos as $n => $persona){
echo "<tr>";
echo "<td>".$persona['id']."</td>";
echo "<td>".$persona['nombre']."</td>";
echo "<td>".$persona['edad']."</td>";
echo "</tr>";
}
echo "</table><br />";
}
/* RECUPERANDO UN VALOR en una Variable, se evita usar el bucle FOR para recorrer los datos ya que solo se tiene 1 registro */
$sql = "select nombre, edad from persona where id = 2 limit 1";
$persona = $bd->wquery($sql, true); // Mando el parametro TRUE como 2do argumento para FORZAR
echo "El nombre de la persona es: ".$persona['nombre'].", y su edad es: ".$persona['edad'];
/* Se cierra la conexion */
$bd->fin();
?>
Imprime esto en pantalla:
Insertar CODE, HTML o PHP:
1. insert into persona (id, nombre, dni, celular, edad) values (1, "Juan Lopez", 46217213, 932649492, 20)
2. insert into persona (id, nombre, dni, celular, edad) values (2, "Maria Gabriela", 41654312, 955412343, 22)
3. update persona set nombre = "Juan Perez Lopez" where id = 1
4. update persona set edad = edad + 1 where id = 1
ID NOMBRE EDAD
1 Juan Perez Lopez 21
2 Maria Gabriela 22
El nombre de la persona es: Maria Gabriela, y su edad es: 22
Aquí el código de la clase (class.bd.php):
Insertar CODE, HTML o PHP:
<?
/*
Class BD v1.6 - ####### NO EDITAR #######
Clase para gestionar MySQL de modo muy facil
Creador: J. K. Benites (http://www.twitter.com/jkbenites) / http://www.bensg.com
Última modificación: 12/31/2012 08:18 am
Licencia: GRATUITA
*/
require_once("bd.php");
class bd{
private $bd;
public function inicio(){
/*
Inicia los eventos
*/
$this->bd = @mysql_connect(SERVER,DB_USER,DB_PASS);
if($this->bd) {
$cBd = @mysql_select_db(DB_NAME, $this->bd);
if(!$cBd) {
echo "<p>No se puede conectar a la Base de Datos. Asegurese que la base de datos exista y sea el mismo en el archivo bd.php</p>";
exit;
}
}else {
echo "<p>No se puede conectar al host. Por favor verifique los datos de conexion en el archivo bd.php</p>";
exit;
}
}
function wquery($sql, $valor_retorno_unico=false){
/*
Hace un query con datos al retorno.
*/
if(!$this->bd){
return -1;
}else{
$rpta = @mysql_query($sql, $this->bd) or die(@mysql_error());
$total = @mysql_num_rows($rpta);
if($total > 0){
$array = array();
$c=0;
if($total==1){
if($valor_retorno_unico == false){
$array[0] = @mysql_fetch_assoc($rpta);
return $array;
}else{
return @mysql_fetch_assoc($rpta);
}
}else{
while($reg= @mysql_fetch_assoc($rpta)){
$array[$c]= $reg;
$c++;
}
return $array;
}
}else{
return 0;
}
}
}
function query($sql){
/*
Hace un query sin valor de retorno de datos
*/
if(!$this->bd){
return -1;
}else{
if(@mysql_query($sql,$this->bd)!=false)
return 1;
else
return 0;
}
}
function get_sql_insert($data, $tabla){
/*
Crea la cadena SQL correspondiente para hacer un INSERT
*/
$sql = 'insert into '.$tabla.' (';
$keys = '';
$values ='';
unset($data['bd']);
if(!is_array($data)){return false;}
foreach($data as $llave => $v){
$flag=false;
if(gettype($v)=="integer" or gettype($v)=="double" or gettype($v)=="float"){
$values.=$v.', ';
$flag=true;
}
if(gettype($v)=="string" and $flag==false){
$values.='"'.$v.'", ';
$flag=true;
}
if($flag==true){
//Todo Ok
$keys.= $llave.', ';
}
}
if($flag==true){
$keys = substr($keys,0,strlen($keys)-2);
$values = substr($values,0,strlen($values)-2);
$sql.=$keys.') values ('.$values.')';
return $sql;
}else{
return null;
}
}
function get_sql_update($data, $tabla, $condicional){
/*
Crea la cadena SQL correspondiente para hacer un UPDATE
*/
$sql = 'update '.$tabla.' set ';
$condicional = preg_replace("#'#",'"',$condicional);
unset($data['bd']);
if(!is_array($data)){return false;}
foreach($data as $llave => $v){
$value ='';
$key = $llave;
$flag = false;
if(gettype($v)=="integer" or gettype($v)=="double" or gettype($v)=="float"){
$value = $v;
$flag=true;
}
if(gettype($v)=="string" and $flag==false){
$value.='"'.$v.'"';
$flag = true;
}
if(gettype($v)=="boolean" and $flag==false){
if(substr($key,strlen($key)-1,1)=="+"){
$key = substr($key,0,strlen($key)-1);
$value = $key.' + 1';
$flag=true;
}
if(substr($key,strlen($key)-1,1)=="-"){
$key = substr($key,0,strlen($key)-1);
$value = $key.' - 1';
$flag=true;
}
}
if($flag==true){
//Todo Ok
$sql.= $key.' = '.$value.', ';
}
}
$sql = substr($sql,0,strlen($sql)-2);
if($condicional!=null){
$sql.=' where '.$condicional;
}
if($flag==true){
return $sql;
}else{
return null;
}
}
function get_nuevo_id($tabla){
$bd = new bd();
$bd->inicio();
$datos = $bd->wquery('SHOW TABLE STATUS LIKE "'.$tabla.'"',true);
$bd->fin();
return (integer)$datos['Auto_increment'];
}
function fin(){
/*
Cierra la conexión a la BD.
*/
@mysql_close($bd);
}
}
?>
archivo bd.php
Insertar CODE, HTML o PHP:
<?php
DEFINE('SERVER','localhost');
DEFINE('DB_NAME','base_datos');
DEFINE('DB_USER','usuario');
DEFINE('DB_PASS','clave');
?>