La clase (objeto), en cuestión es la siguiente:
El codigo actual es:
require_once 'Configuration.php';#######################################################################################
# Class Name : MySql
# Author : Armando Ceballos
# Last Mofidy Date : 2010-02-28
# License : GPL
# Email : sarjo6 [at] gmail [dot] com
#######################################################################################
class MySql {
/** Aggregations: */
/** Compositions: */
/*** Attributes: ***/
/**
*
* @access private
*/
private $mysql;
/**
*
* @static
* @access private
*/
private static $debug = false;
/**
*
* @access private
*/
private $tablePrefix = '';
/**
*
*
* @param Configuration configuration
* @param string db_host
* @param string db_user
* @param string db_pass
* @param string db_name
* @param int db_port
* @return
* @access public
*/
public function __construct( $configuration = '', $db_host = '', $db_user = '', $db_pass = '', $db_name = '', $db_port = 3306 ) {
if ($configuration!=""){
$db_host=$configuration->server;
$db_user=$configuration->user;
$db_pass=$configuration->password;
$db_name=$configuration->database;
$this->tablePrefix=$configuration->tablePrefix;
}
$this->mysql = @mysql_connect($db_host.":".$db_port,$db_user, $db_pass, true);
@mysql_select_db($db_name,$this->mysql);
if($this->debug){
if (empty($this->mysql)){
echo 'La información de configuracion esta incorrecta o el servidor no responde, favor de verificar los datos
'.mysql_error().'
';
}else{
echo "Conexion con el servidor de MySQL se a establecido
ServerHost=$db_host
";
}
}
} // end of member function __construct
/**
*
*
* @param string _method
* @param string _args
* @return
* @access public
*/
public function __call( $_method, $_args ) {
if (isset($this->$method) === true) {
$func = $this->$method;
$func();
}
} // end of member function __call
/**
*
*
* @param string table
* @param string columns
* @param string values
* @param string condition
* @return bool
* @access public
*/
public function insert( $table, $columns, $values, $condition = '' ) {
if(empty($this->mysql)){
return "Error al Insertar no se ha establecido una conexion";
}
// Cheka si las columnas esta vacio
if(!$columns){
$columns = "";
}elseif($columns != ""){
$columns = "('$columnas')";
}
// Checa si la condicion esta vacia o no
if(!$condition){
$condi = "";
}elseif($condition != ""){
$condi = " WHERE ".$condition;
}
$insert = $this->query("INSERT INTO ".$this->tablePrefix."$table $columns VALUES($values) $condi",$this->mysql);
if($this->debug){
echo "Inserccion con la cadena = Insert into $table $columns Values($values) $condi
";
echo mysql_error();
}
return ($insert) ? true : false;
} // end of member function insert
/**
*
*
* @param string table
* @param string condition
* @return bool
* @access public
*/
public function delete( $table, $condition ) {
if(empty($this->mysql)){
return "Error al Borrar no se a establecido una conexion";
}
// Checa si la condicion esta vacia o no
if(!$condition){
$condi = "";
}elseif($condition != ""){
$condi = " WHERE ".$condition;
}
$delete = $this->query("DELETE FROM ".$this->tablePrefix."$table $condi",$this->mysql);
if($this->debug){
echo "Borrado con la cadena = Delete From $table $condi
";
}
return ($delete) ? true : false;
} // end of member function delete
/**
*
*
* @param queryid
* @return int
* @access public
*/
public function howMany( $queryid ) {
if($queryid != ""){
$total = mysql_num_rows($queryid);
}
if($this->debug){
echo "Numero = ".$total."
";
}
return $total;
} // end of member function howMany
/**
*
*
* @return int
* @access public
*/
public function insertId( ) {
$insert_id = mysql_insert_id($this->mysql);
if($this->debug){
echo "Insercion con ID = ".$insert_id."
";
}
return $insert_id;
} // end of member function insertId
/**
*
*
* @param string data
* @return string
* @access public
*/
public function clean( $data ) {
$data = htmlspecialchars(stripslashes($data));
$data = str_ireplace("script", "blocked", $data);
$data = mysql_escape_string($data);
return $data;
} // end of member function clean
/**
*
*
* @param queryid
* @return
* @access public
*/
public function handle( $queryid ) {
if($queryid != ""){
$object = mysql_fetch_object($queryid);
if($this->debug){
echo "qid = $queryid
";
echo 'obj = '.serialize($object).'
';
}
}
return $object;
} // end of member function handle
/**
*
*
* @param string string
* @return
* @access public
*/
public function query( $string ) {
if(empty($this->mysql)){
return false;
}
$ejecucion= @mysql_query($string,$this->mysql);
if($this->debug){
echo "Query cadena = $string
";
}
return ($ejecucion) ? $ejecucion : false;
} // end of member function query
/**
*
*
* @return
* @access public
*/
public function setDebug( ) {
$this->debug=true;
} // end of member function setDebug
/**
*
*
* @param string prefix
* @return
* @access public
*/
public function setTablePrefix( $prefix ) {
$this->tablePrefix=$prefix;
} // end of member function setTablePrefix
/**
*
*
* @param string table
* @param string string
* @param string condition
* @return bool
* @access public
*/
public function update( $table, $string, $condition ) {
if(empty($this->mysql)){
return "Error al Actualizar no se a establecido una conexion";
}
// Checa si la condicion esta vacia o no
if(!$condition){
$condi = "";
}elseif($condition != ""){
$condi = " WHERE ".$condition;
}
$update = $this->query("UPDATE ".$this->tablaPrefix."$table SET $string $condi",$this->mysql);
if($this->debug){
echo "Actualizacion con la cadena = Update $table Set $string $condi
";
}
return ($update) ? true : false;
} // end of member function update
/**
*
*
* @return
* @access public
*/
public function __destruct( ) {
if(!empty($this->mysql)){
mysql_close($this->mysql);
}
} // end of member function __destruct
/**
*
*
* @param queryid
* @return bool
* @access public
*/
public function move($queryid,$position){
return (mysql_field_seek($queryid,$position));
}// end of member function next
} // end of MySql
Como muchos proyectos usan los mismos datos de conexion repetidas veces e creado esta clase auxiliar que guarda los datos de la configuracion.
/** * class Configuration * */ class Configuration{ /** Aggregations: */ /** Compositions: */ /*** Attributes: ***/ /** * * @access private */ private $typedb = 'mysql'; /** * * @access private */ private $server = 'localhost'; /** * * @access private */ private $user = 'root'; /** * * @access private */ private $password = ''; /** * * @access private */ private $database = ''; /** * * @access private */ private $port = 3306; /** * * @access private */ private $tabePrefix = ''; } // end of Configuration
Algunos ejemplos de como usar la clase: |
/* * Una tabla empleados en servidor local y base dedatos empresa * ejemplo * id | nombre * 0 | sarjo * 1 | dante * 2 | demia * 3 | esmeralda */ require_once 'MySQL.php'; $configuracion = new Configuracion(); $mysql = new MySql($configuracion); //or $mysql = new MySql("",'root','contrasena','empresa'); // $puerto=3307; //aqui podria ser otro puerto del servidor que no sea el default 3306 //or $mysql = new MySql("",'root','contrasena','empresa',$puerto); //supongamos que insertamos un dato y que el id es autonumerico y permite null $mysql->insert('empleados', 'nombre', 'pureba'); // or incluyendolo y que las entradas sean variables $id=666; $name="lucifer's body"; //limpiamos la entrada $name=$mysql->clean($name); $mysql->insert('empleados', 'id, nombre', "'$id','$name'"); echo 'Se a gregado el id '.$mysql->insertId(); $table_name='empleados'; $mysql->update($table_name, "nombre=prueba", "id=4"); $_POST['borrar']=666; $borrar=$_POST['borrar']; //hasta este punto insert update y delete returnan boleano para que puedan ser usados en deciciones ejemplo //uso de operador ternario echo ($mysql->delete($table_name, "id=$borrar")) ? 'se Borro' : 'No se Borro'; //sin operador if ($mysql->delete($table_name, "id=$borrar")) { echo 'se Borro'; }else{ echo 'No se Borro'; } $queryid=$mysql->query("select * from empleados"); echo 'Hay '.$mysql->howMany($queryid).' empleados son: '; //convertire la query en objetos y la recorrere while ($empleado=$mysql->handle($queryid)){ echo $empleados->id.' | '.$empleado->nombre.'
'; } $empleado=$mysql->handle($queryid); //me muevo a la ultima posicion $mysql->move($queryid, $mysql->howMany($queryid)-1); echo 'el ultimo empleado se llama: '.$empleado->nombre; /************************************ * si se quiere ver las querys como se van procesando * $mysql->setDebug(); * * si por ejemplo solo tubieras una unica base de datos te seria util identificar tablas * usando prefijos para saber a que sistema pertenecen se puede declarar un prefijo con el metodo * * $mysql->setTablePrefix('prefijo'); * * entonces las tablas a las que se insertarian en este ejemplo serian * * prefijo_empleados * * dudas comentarios y sugerencias a * sarjo6 [at] gmail [dot] com * */ ?> DESCARGA TODOS LOS ARCHIVOS
Cualquier duda o comentario favor de hacerlo esta clase esata bajo GPL.
Cualquier mejora o comentario estare gustoso de leerla
No hay comentarios:
Publicar un comentario