Buenas... hace un par de dias postee mi clase para conectarme y ejecutar sentencias en mysql y me recomendaron que usara PDO ya que mysql* queda obsoleta... ademas de las ventajas que tiene PDO.
Así fue que logre conectarme a la base de datos y manejarla desde mi clase usuarios (en este caso)
Me gustaria que me comentaran si lo estoy haciendo de forma aceptable...
Funcionar... funciona, hasta ahora me sirve y me resulta bastante comodo... pero es seguro y practico?
Esta clase es solo para obtener los datos para la conexion.
Código PHP:
<?php
class ConfigBD{
public $DBServer;
public $DBName;
public $UserName;
public $Password;
function __construct(){
$this->DBServer='localhost';
$this->UserName='root';
$this->Password='toor';
$this->DBName='db';
}
}
?>
Código PHP:
<?php
include_once 'claseConfigDB.php';
class db{
/*** Declare instance ***/
private static $instance = NULL;
/**
*
* the constructor is set to private so
* so nobody can create a new instance using new
*
*/
private function __construct() {
/*** maybe set the db name here later ***/
}
/**
*
* Return DB instance or create intitial connection
*
* @return object (PDO)
*
* @access public
*
*/
public static function getInstance() {
if (!self::$instance)
{
$conexion = new ConfigBD();
self::$instance = new PDO("mysql:host=$conexion->DBServer;dbname=$conexion->DBName",$conexion->UserName,$conexion->Password);; //asi funciona y con variables NO.
self::$instance-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$instance;
}
/**
*
* Like the constructor, we make __clone private
* so nobody can clone the instance
*
*/
private function __clone(){
}
} /*** end of class ***/
Y esta es mi clase Usuario para mi tabla de usuarios
Código PHP:
<?php
include_once "claseBaseDatos.php";
class Usuario{
private $id_usuario;
private $nombre;
private $apellido;
private $usuario;
private $pass;
private $rol;
private $email;
private $telefono;
private $activo;
public function __construct(){
$this->idusuario = "";
$this->nombre = "";
$this->apellido = "";
$this->usuario = "";
$this->pass = "";
$this->rol = "";
$this->email = "";
$this->telefono = "";
$this->activo = "";
}
public function cargar($id_usuario = null, $nombre, $apellido, $usuario, $pass, $rol, $email, $telefono){
$this->setIdUsuario($id_usuario);
$this->setNombre($nombre);
$this->setApellido($apellido);
$this->setUsuario($usuario);
$this->setPass($pass);
$this->setRol($rol);
$this->setEmail($email);
$this->setTelefono($telefono);
}
public function setIdUsuario($id_usuario){
$this->idusuario = $id_usuario;
}
public function setNombre($nombre){
$this->nombre=$nombre;
}
public function setApellido($apellido){
$this->apellido=$apellido;
}
public function setUsuario($usuario){
$this->usuario=$usuario;
}
public function setPass($pass){
$this->pass=$pass;
}
public function setRol($rol){
$this->rol=$rol;
}
public function setEmail($email){
$this->email=$email;
}
public function setTelefono($telefono){
$this->telefono=$telefono;
}
public function setActivo($activo){
$this->activo=$activo;
}
public function getIdUsuario(){
return $this->idusuario;
}
public function getNombre(){
return $this->nombre;
}
public function getApellido(){
return $this->apellido;
}
public function getUsuario(){
return $this->usuario;
}
public function getPass(){
return $this->pass;
}
public function getRol(){
return $this->rol;
}
public function getEmail(){
return $this->email;
}
public function getTelefono(){
return $this->telefono;
}
public function getActivo(){
return $this->activo;
}
public function agregarUsuario(){
$query="INSERT INTO usuarios (id_usuario, nombre, apellido, usuario, pass, rol, email, telefono) VALUES (:id_usuario, :nombre, :apellido, :usuario, :pass, :rol, :email, :telefono)";
try
{
$comando = DB::getInstance()->prepare($query);
$rows = $comando->execute(array(':id_usuario' => $this->getIdUsuario(), ':nombre' => $this->getNombre(), ':apellido' => $this->getApellido(), ':usuario' => $this->getUsuario(), ':pass' => $this->getPass(), ':rol' => $this->getRol(), ':email' => $this->getEmail(), ':telefono' => $this->getTelefono()));
if( $rows == 1 ){echo 'INSERT correcto';}
}
catch(PDOException $e)
{
echo 'Error: ' . $e->getMessage();
}
}
public function buscarUsuario($id_usuario){
$query = "SELECT * FROM usuarios WHERE id_usuario=".(int)$id_usuario;
try {
$comando = DB::getInstance()->prepare($query);
$comando->execute();
if($row = $comando->fetch(PDO::FETCH_ASSOC)) {
$this->setIdUsuario($row['id_usuario']);
$this->setNombre($row['nombre']);
$this->setApellido($row['apellido']);
$this->setUsuario($row['usuario']);
$this->setRol($row['rol']);
$this->setEmail($row['email']);
$this->setTelefono($row['telefono']);
$this->setActivo($row['activo']);
return true;
}else{
echo 'No hay resultado para esa consulta';
return false;
}
}catch(PDOException $e){
echo 'Error: ' . $e->getMessage();
}
}
public static function listarUsuarios(){
$query = "SELECT * FROM usuarios";
try {
$comando = DB::getInstance()->prepare($query);
$comando->execute();
$arreglo = array();
while( $datos = $comando->fetch() ) {
$usuario=new Usuario();
$usuario->cargar($datos[0], $datos[1], $datos[2], $datos[3], $datos[4], $datos[5], $datos[6], $datos[7], $datos[8]);
array_push($arreglo,$usuario);
}
return $arreglo;
}catch(PDOException $e){
echo 'Error: ' . $e->getMessage();
}
}
public function eliminarUsuario(){
$query="DELETE FROM usuarios WHERE id_usuario = :id_usuario";
try
{
$comando = DB::getInstance()->prepare($query);
$rows = $comando->execute(array(':id_usuario' => $this->getIdUsuario()));
if( $rows == 1 ){echo 'DELETE correcto';}
}
catch(PDOException $e)
{
echo 'Error: ' . $e->getMessage();
}
}
public function editarUsuario(){
try
{
$comando = DB::getInstance()->prepare('UPDATE usuarios SET nombre = :nombre, apellido = :apellido, usuario = :usuario, pass = :pass, rol = :rol, email = :email, telefono = :telefono, activo = :activo WHERE id_usuario = :id_usuario');
$rows = $comando->execute(array(':nombre' => $this->getNombre(), ':apellido' => $this->getApellido(), ':usuario' => $this->getUsuario(), ':pass' => md5($this->getPass()), ':rol' => $this->getRol(), ':email' => $this->getEmail(), ':telefono' => $this->getTelefono(), ':activo' => $this->getActivo(), ':id_usuario' => $this->getIdUsuario()));
if( $rows == 1 ){echo 'UPDATE correcto';}
}
catch(PDOException $e)
{
echo 'Error: ' . $e->getMessage();
}
}
}
?>
Las dos primeras clases las saque de algun lado... diria de donde pero no me acuerdo, si alguien sabe que le de los creditos jeje.
Gracias por todo saludos!