| 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($sql, 0);
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($sql, 0);
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($sql, 0);
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 |