Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP OO Conexion para procedimientos almacenados

Estas en el tema de Conexion para procedimientos almacenados en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola que tal miren tengo la siguinete pregunta espero que me puedan ayudar. Estoy empezado a trabajar con Procedimientos Almacenados en MySql y PHP e ...
  #1 (permalink)  
Antiguo 04/07/2011, 10:56
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 14 años, 4 meses
Puntos: 1
Conexion para procedimientos almacenados

Hola que tal miren tengo la siguinete pregunta espero que me puedan ayudar.

Estoy empezado a trabajar con Procedimientos Almacenados en MySql y PHP e investigado que para llamar a un procedimineto se tiene que hacer la conexion a mysql con este comando:
Código PHP:
Ver original
  1. $link = mysqli_connect('localhost', 'user', 'pass', "dbname");
. Pero resulta que tengo una clase de conexion pero en esa clase uso el comando normal para conexion que es este:
Código PHP:
Ver original
  1. mysql_connect($this->servidor, $this->usuario, $this->password);
. Mi pregunta es que si en la clase que tengo puedo poner las dos conexiones y que se utilizen las dos por que requireo de ejecutar un Procedimento Almacenado y as u vez hacer consultas a MySql normalmente como le puedo hace.

Les pongo la clase de conexion.

Código PHP:
Ver original
  1. /* Clase encargada de gestionar las conexiones a la base de datos */
  2. Class Db{
  3.     private $servidor="localhost";
  4.     private $usuario="root";
  5.     private $password='';
  6.     private $base_datos="";
  7.     private $link;
  8.     private $stmt;
  9.     private $array;
  10.     private $procedimiento=0;
  11.     static $_instance;
  12.      /*La función construct es privada para evitar que el objeto pueda ser creado mediante new*/
  13.     private function __construct($procedimiento){
  14.         if($procedimiento==1){
  15.             $this->conectarProcedimiento();
  16.         }elseif($procedimiento==0){
  17.             $this->conectar();
  18.         }
  19.     }     /*Evitamos el clonaje del objeto. Patrón Singleton*/
  20.     private function __clone(){ }
  21.     /*Función encargada de crear, si es necesario, el objeto.
  22.        Esta es la función que debemos llamar desde fuera de la clase para instanciar el objeto,
  23.        y así, poder utilizar sus métodos*/
  24.     public static function getInstance($procedimiento){
  25.         if (!(self::$_instance instanceof self)){
  26.             self::$_instance=new self($procedimiento);
  27.         }
  28.         return self::$_instance;
  29.     }
  30.    
  31.     /*Realiza la conexión a la base de datos.*/
  32.     private function conectar(){
  33.         $this->link=mysql_connect($this->servidor, $this->usuario, $this->password);
  34.         mysql_select_db($this->base_datos,$this->link);
  35.         @mysql_query("SET NAMES 'utf8'");
  36.     }
  37.     /*Método para ejecutar una sentencia sql*/
  38.     public function ejecutar($sql){
  39.         $this->stmt=mysql_query($sql,$this->link);
  40.         return $this->stmt;
  41.     }
  42.     /*Método para obtener una fila de resultados de la sentencia sql*/
  43.     public function obtener_fila($stmt,$fila){
  44.         if ($fila==0){
  45.             $this->array=mysql_fetch_array($stmt);
  46.         }else{
  47.             mysql_data_seek($stmt,$fila);
  48.             $this->array=mysql_fetch_array($stmt);
  49.         }
  50.         return $this->array;
  51.  
  52.     }
  53.     //Devuelve el último id del insert introducido
  54.     public function lastID(){
  55.         return mysql_insert_id($this->link);
  56.     }
  57.     function contar_registros($stmt){
  58.         if ($stmt!="")
  59.         {
  60.             $result = mysql_query($stmt) or die("Error: ".mysql_errno().":- ".mysql_error());
  61.             if ($result)
  62.             {
  63.                 $cnt = mysql_num_rows($result);
  64.                 return $cnt;
  65.             }
  66.         }
  67.     }
  68. }
Le he puesto un if al contructor para saber cuendo voy a utilizar un procedimiento pero en caso de que utilice ambos como le puedo hacer?. Espero y me puedan ayudar saludos
  #2 (permalink)  
Antiguo 04/07/2011, 11:24
Avatar de Vitesse92  
Fecha de Ingreso: diciembre-2009
Ubicación: Internet
Mensajes: 145
Antigüedad: 14 años, 4 meses
Puntos: 5
Respuesta: Conexion para procedimientos almacenados

Donde esta la funcion conectarProcedimiento()? :O ...
no entiendo...
me imagino que hagas lo que tengas que hacer, tienes que contar
entonces solo deberías comprobar en el if si vas a conectarProcedimiento()
y de igual forma antes conectas $this->conectar()
__________________
Imagenes de amor y Imagenes de amor . 1313
  #3 (permalink)  
Antiguo 04/07/2011, 11:56
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Conexion para procedimientos almacenados

Entoces lo que me suguieres es que llama a las dos funciones. Y este es mi funcion de conectarProcedimiento:
Código PHP:
Ver original
  1. private function conectarProcedimiento(){
  2.         $this->link=mysqli_connect($this->servidor,$this->usuario,$this->password);
  3.         if (mysqli_connect_errno()) { #checa la conexion
  4.             printf("Conexion fallida: %s\n", mysqli_connect_error());
  5.             exit();
  6.         }
  7.  
  8.     }
  #4 (permalink)  
Antiguo 05/07/2011, 09:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Conexion para procedimientos almacenados

Mysqli y Mysql son dos librerías diferentes de conexión, lo mejor es que migraras todo tu sistema a usar Mysqli, o aún mejor PDO.

Saludos.
  #5 (permalink)  
Antiguo 05/07/2011, 10:58
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Conexion para procedimientos almacenados

Muschas grasias migrare todo mi sistema a mysqli saludos

Etiquetas: conexion, procedimientos, almacenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:46.