Ver Mensaje Individual
  #19 (permalink)  
Antiguo 20/09/2010, 00:05
Avatar de carlos_belisario
carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

bueno siguiendo algunos concejos de los compañeros que me dieron ak empece a meterme con PDO y a separar las obligaciones lo que hic funciona pero como siempre digo el echo que algo funcione no kiere decir que este bien sino que no tiene ningun error de comando entonces pongo ak lo que realice y se los comento a ver que me dicen
conexion.php
Código PHP:
Ver original
  1. <?php
  2. require_once("config.php");
  3. class Conexion extends PDO
  4. {
  5.     private static $_instance = null;
  6.     private $_query;
  7.     private $_row;
  8.     function __construct($dbs,$type)
  9.     {      
  10.         // Obtenemos el Config desde un array, clase config etc:
  11.         $config = Config::getInstance();
  12.         $host=$config->Host;
  13.         if(empty($dbs)){
  14.             if($config->DBName!=""){
  15.                 $db =$config->DBName;          
  16.             }
  17.             else
  18.                 echo "No ha configurado la base de datos"; 
  19.         }
  20.         else{
  21.             $db=$dbs;
  22.         }          
  23.         $user = $config->UserName;
  24.         $pwd = $config->Password;
  25.         $attrs = array();      
  26.         $dsn = $type.':host='.$host.';dbname='.$db;    
  27.         echo parent::__construct( $dsn, $user, $pwd, $attrs );
  28.         $this -> setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  29.     }
  30.     public static function getInstance($dbs="",$type="mysql")
  31.     {      
  32.         if( self::$_instance==null){
  33.             self::$_instance = new self($dbs,$type);
  34.         }
  35.         return self::$_instance;
  36.     }  
  37. }
es la clase que instancia la conexion con la base de datos viendo algunos ejemplos en la web y unos concejos en un tema de ak sencillamente cree una clase heredada de PDO los parametros que se deben pasar es el nombre de la base de datos sino se pasa alguno se queda la por defecto que se indico en config, el otro dato es el typo de base de datos yo la probe con las que conosco mysql que es la que mas he trabajado y un poco con postgresql ya que son los que conosco por el standar sql q he trabajado,
sql.php
Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. class SQL
  4. {
  5.     private $_conect;
  6.     private $_query;
  7.     private $_row;
  8.     private $_result;
  9.     public function __construct(){}
  10.     public function selectAll($table){
  11.         try{
  12.             $this->_conect=Conexion::getInstance();
  13.             $this->_query=$this->_conect->prepare("SELECT * FROM $table");
  14.             $this->_query->execute();
  15.             while($this->_row=$this->_query->fetch()){ 
  16.                 $this->_result[]=$this->_row;          
  17.             }
  18.             return $this->_result;
  19.         }
  20.         catch(PDOExeption $e){
  21.             echo $e->getMessaage();
  22.         }
  23.     }  
  24.     public function buscarQuery($query,$parametro=NULL)
  25.     {
  26.         try{           
  27.             $this->_conect=Conexion::getInstance();
  28.             $this->_query=$this->_conect->prepare($query);
  29.             $this->_query->execute($parametro);                                
  30.             while($this->_row=$this->_query->fetch()){ 
  31.                 $result[]=$this->_row;
  32.             }
  33.             return  $result;
  34.         }
  35.         catch(PDOExeption $e){
  36.             echo $e->getMessaage();
  37.         }
  38.     }      
  39.     public function insert($table,$campos,$valores)
  40.     {
  41.         if(!is_array($campos) || !is_array($valores)){
  42.             echo "Los datos deben de estar en formato de arreglo";
  43.         }
  44.         try{
  45.             $this->_conect=Conexion::getInstance();            
  46.             $campo=implode(",",$campos);           
  47.             foreach($valores as $id=>$valor){
  48.                 $valorIngresar[]="'".$valor."'";
  49.             }
  50.             $valors=implode(",",$valorIngresar);
  51.             $sql="INSERT INTO $table ($campo) VALUES ($valors)";
  52.             $this->_conect->exec($sql);
  53.         }
  54.         catch(PDOExeption $e){
  55.             echo $e->getMessaage();
  56.         }  
  57.     }      
  58. }
  59. ?>
aca la clase sql que es la que se encarga de la accion de las consultas hice unos metodos para ahorrarme el tener que escribir sql menos el de las consultas complejas ya que no me dio la cabeza jaja bueno espero sus comentarios como el de vas mas o menos pero no estas loco o algo parecido saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way