Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/04/2008, 09:00
rolandodt
 
Fecha de Ingreso: junio-2007
Mensajes: 7
Antigüedad: 17 años, 7 meses
Puntos: 0
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

Última edición por GatorV; 17/04/2008 a las 11:04 Razón: tags PHP