Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Conexión a MySQL y a SQL Server (http://www.forosdelweb.com/f68/conexion-mysql-sql-server-576975/)

rolandodt 17/04/2008 09:00

Conexión a MySQL y a SQL Server
 
Tengo una aplicación en PHP que se conecta a MySQL y todo funciona correctamenre, tengo otra que se conecta a SQL Server correctamente, uso la misma clase solo que cada una conectandose a su respectivo servidor, pero me pidieron una alicación con MYSQL que constantemente este conaultando una tabla en SQL Server y actualizando en MySQL pero al querer usar la clase de cada conexión, la de SQL Server no se conecta, aqui dejo las clases para cada conexión:
Código PHP:

/////////////////////   mysql.php /////////////////////////////
<?php

//Clase que maneja la conexion con MySql
class DBLayer
{
    var 
$prefix;       //Prefijo de las tablas de la base de datos
    
var $link_id;      //ID de la conexion
    
var $query_result//Resultado del query

    
var $saved_queries = array(); //Querys almacenados
    
var $num_queries 0;         //Cantidad de querys ejecutados

    //Constructor
    
function DBLayer($db_host$db_username$db_password$db_name$db_prefix$p_connect)
    {
        
$this->prefix $db_prefix;

        if (
$p_connect)
            
$this->link_id = @mysql_pconnect($db_host$db_username$db_password);
        else
            
$this->link_id = @mysql_connect($db_host$db_username$db_password);
            
        
        if (
$this->link_id)
        {
            if (@
mysql_select_db($db_name$this->link_id))
                
                return 
$this->link_id;
            else
                
//error('No se pudo abrir la base de datos. Error de MySQL: '.mysql_error(), __FILE__, __LINE__);
                
mysql_error() ;
                
        }
        else
            
//error('No se pudo conectar al servidor de MySQL. Error de MySQL: '.mysql_error(), __FILE__, __LINE__);
            
mysql_error() ;
    }

    
//Ejecuta un query
    
function query($sql$unbuffered false)
    {
        
        if (
$unbuffered)
            
$this->query_result = @mysql_unbuffered_query($sql$this->link_id);
        else
            
$this->query_result = @mysql_query($sql$this->link_id);

        
        if (
$this->query_result)
        {
            ++
$this->num_queries;

            return 
$this->query_result;
        }
        else
        {
            
$this->saved_queries[] = array($sql0);

            return 
false;
        }
    }

    function 
db_query($db_name$sql$unbuffered false)
    {
        
        
$selDb = @mysql_select_db($db_name$this->link_id);

        if (
$unbuffered)
            
$this->query_result = @mysql_unbuffered_query($sql$this->link_id);
        else
            
$this->query_result = @mysql_query($sql$this->link_id);

        
        if (
$this->query_result)
        {
            ++
$this->num_queries;

            return 
$this->query_result;
        }
        else
        {
            
$this->saved_queries[] = array($sql0);

            return 
false;
        }
    }

    
/* Funciones que encapsulan los metods de acceso a MySql de PHP */
    
function select_db($db_name) {
        return @
mysql_select_db($db_name$this->link_id) ;
    }

    function 
result($query_id 0$row 0)
    {
        return (
$query_id) ? @mysql_result($query_id$row) : false;
    }

    function 
fetch_assoc($query_id 0)
    {
        return (
$query_id) ? @mysql_fetch_assoc($query_id) : false;
    }

    function 
fetch_row($query_id 0)
    {
        return (
$query_id) ? @mysql_fetch_row($query_id) : false;
    }

    function 
num_rows($query_id 0)
    {
        return (
$query_id) ? @mysql_num_rows($query_id) : false;
    }

    function 
affected_rows()
    {
        return (
$this->link_id) ? @mysql_affected_rows($this->link_id) : false;
    }

    function 
insert_id()
    {
        
//return ($this->link_id) ? @mysql_insert_id($this->link_id) : false;
        
$result $this->fetch_assoc$this->query('select @@IDENTITY as clave') );
        return 
$result['clave'] ;
    }
    
/* Fin de funciones que encapsulan los metods de acceso a MySql de PHP */

    //Regresa el numero de querys ejecutados
    
function get_num_queries()
    {
        return 
$this->num_queries;
    }

    
//Regresa los querys almacenados
    
function get_saved_queries()
    {
        return 
$this->saved_queries;
    }

    
//Libera el query de memoria
    
function free_result($query_id false)
    {
        return (
$query_id) ? @mysql_free_result($query_id) : false;
    }

    
//Maneja caracteres especiales
    
function escape($str)
    {
        if (
function_exists('mysql_real_escape_string'))
            return 
mysql_real_escape_string($str$this->link_id);
        else
            return 
mysql_escape_string($str);
    }

    
//Regresa el error del query
    
function error()
    {
        
$result['error_sql'] = @current(@end($this->saved_queries));
        
$result['error_no'] = @mysql_errno($this->link_id);
        
$result['error_msg'] = @mysql_error($this->link_id);

        return 
$result;
    }

    
//Cierra la conexion con la base de datos
    
function close()
    {
        if (
$this->link_id)
        {
            if (
$this->query_result)
                @
mysql_free_result($this->query_result);

            return @
mysql_close($this->link_id);
        }
        else
            return 
false;
    }
}


/////////////////////   mssql.php /////////////////////////////
<?php

//Clase que maneja la conexion con MySql
class DBLayer
{
    var 
$prefix;       //Prefijo de las tablas de la base de datos
    
var $link_id;      //ID de la conexion
    
var $query_result//Resultado del query

    
var $saved_queries = array(); //Querys almacenados
    
var $num_queries 0;         //Cantidad de querys ejecutados

    //Constructor
    
function DBLayer($db_host$db_username$db_password$db_name$db_prefix$p_connect)
    {
        
$this->prefix $db_prefix;

        if (
$p_connect)
            
$this->link_id = @mssql_pconnect($db_host$db_username$db_password);
        else
            
$this->link_id = @mssql_connect($db_host$db_username$db_password);
            
        
        if (
$this->link_id)
        {
            if (@
mssql_select_db($db_name$this->link_id))
                
                return 
$this->link_id;
            else
                
//error('No se pudo abrir la base de datos. Error de MySQL: '.mysql_error(), __FILE__, __LINE__);
                
mssql_error() ;
                
        }
        else
            
//error('No se pudo conectar al servidor de MySQL. Error de MySQL: '.mysql_error(), __FILE__, __LINE__);
            
mssql_error() ;
    }

    
//Ejecuta un query
    
function query($sql$unbuffered false)
    {
        
        if (
$unbuffered)
            
$this->query_result = @mysql_unbuffered_query($sql$this->link_id);
        else
            
$this->query_result = @mssql_query($sql$this->link_id);

        
        if (
$this->query_result)
        {
            ++
$this->num_queries;

            return 
$this->query_result;
        }
        else
        {
            
$this->saved_queries[] = array($sql0);

            return 
false;
        }
    }

    
/* Funciones que encapsulan los metods de acceso a MySql de PHP */
    
function result($query_id 0$row 0)
    {
        return (
$query_id) ? @mssql_result($query_id$row) : false;
    }

    function 
fetch_assoc($query_id 0)
    {
        return (
$query_id) ? @mssql_fetch_assoc($query_id) : false;
    }

    function 
fetch_row($query_id 0)
    {
        return (
$query_id) ? @mssql_fetch_row($query_id) : false;
    }

    function 
num_rows($query_id 0)
    {
        return (
$query_id) ? @mssql_num_rows($query_id) : false;
    }

    function 
affected_rows()
    {
        return (
$this->link_id) ? @mssql_affected_rows($this->link_id) : false;
    }

    function 
insert_id()
    {
        
//return ($this->link_id) ? @mysql_insert_id($this->link_id) : false;
        
$result $this->fetch_assoc$this->query('select @@IDENTITY as clave') );
        return 
$result['clave'] ;
    }
    
/* Fin de funciones que encapsulan los metods de acceso a MySql de PHP */

    //Regresa el numero de querys ejecutados
    
function get_num_queries()
    {
        return 
$this->num_queries;
    }

    
//Regresa los querys almacenados
    
function get_saved_queries()
    {
        return 
$this->saved_queries;
    }

    
//Libera el query de memoria
    
function free_result($query_id false)
    {
        return (
$query_id) ? @mssql_free_result($query_id) : false;
    }

    
//Maneja caracteres especiales
    
function escape($str)
    {
        if (
function_exists('mysql_real_escape_string'))
            return 
mysql_real_escape_string($str$this->link_id);
        else
            return 
mysql_escape_string($str);
    }

    
//Regresa el error del query
    
function error()
    {
        
$result['error_sql'] = @current(@end($this->saved_queries));
        
$result['error_no'] = @mysql_errno($this->link_id);
        
$result['error_msg'] = @mysql_error($this->link_id);

        return 
$result;
    }

    
//Cierra la conexion con la base de datos
    
function close()
    {
        if (
$this->link_id)
        {
            if (
$this->query_result)
                @
mssql_free_result($this->query_result);

            return @
mssql_close($this->link_id);
        }
        else
            return 
false;
    }
}

//////////////////////////////////////
Mi aplicación primero se conecta a MySQL para validación de usuarios :
Código PHP:

require 'datos_conn.php';
require_once(
'../Clases/lib/mysql.php') ;
$dbCon = new DBLayer($db_host$db_username$db_password$db_name''$p_connect); 

Pero al querer conectarme a SQL Server mediante su clase, (incluso ya le cambie en nombre a la clase) pues nomas no se conecta.

Espero que alguien me pueda guiar en esto. De antemano Gracias

GatorV 17/04/2008 11:06

Re: Conexión a MySQL y a SQL Server
 
Hola rolandodt,

La clase que pones, te servirá únicamente para MySQL, ya que usa la librería de MySQL para conectarse.

Para conectarte a MSSQL debes de usar la librería adecuada (funciones mssql_connect, mssql_query, etc.).

Saludos.

Tema trasladado a PHP Orientado a Objetos.

quitos 24/04/2008 12:09

Re: Conexión a MySQL y a SQL Server
 
Yo te recomendaria usar las liberias de ADODB para php, con eso creas 2 conexiones y vas llamandolas y con eso todo lo demas ya no cambia y kedaria standarizado como lo pretendes hacer.

http://adodb.sourceforge.net/#download

hernandos 25/04/2008 01:59

Re: Conexión a MySQL y a SQL Server
 
Existe otra muy buena opcion para la abstraccion de la base de datos, DB y MDB de PEAR.

http://pear.php.net/package/DB/redirected

krasburn 23/05/2008 06:46

Respuesta: Conexión a MySQL y a SQL Server
 
Yo tambien te recomendaria el uso de la libreria adodb para la conexion. Ademas crearia una clase para cada tipo de conexion. o sea, una para SQL Server y otra para MySQL.

zsamer 23/05/2008 09:08

Respuesta: Re: Conexión a MySQL y a SQL Server
 
Cita:

Iniciado por hernandos (Mensaje 2378688)
Existe otra muy buena opcion para la abstraccion de la base de datos, DB y MDB de PEAR.

http://pear.php.net/package/DB/redirected

Tanto ADODB como MDB de PEAR están obsoletas, deberían utilizar PDO que biene en PHP5, o bien algún ORM como el de Zend Framework (Zend_Db_Table) o Propel o Doctrine (Las tres utilizan PDO).

destor77 26/05/2008 12:51

Respuesta: Conexión a MySQL y a SQL Server
 
yo que vos usaría PDO como te recomendaron


La zona horaria es GMT -6. Ahora son las 19:10.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.