El titulo es largo pero define perfectamente que hace la clase.
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