Foros del Web » Programando para Internet » PHP »

PHP - SQL Server

Estas en el tema de PHP - SQL Server en el foro de PHP en Foros del Web. Gente estoy teniendo bastantes problemas para conectarme con PHP a un SQL Server 2008. Me dice que la funcion mssql_connect no existe ¿? ¿Alguien tiene ...
  #1 (permalink)  
Antiguo 19/10/2012, 18:25
 
Fecha de Ingreso: mayo-2003
Mensajes: 509
Antigüedad: 17 años
Puntos: 6
PHP - SQL Server

Gente estoy teniendo bastantes problemas para conectarme con PHP a un SQL Server 2008.
Me dice que la funcion mssql_connect no existe ¿?
¿Alguien tiene experiencia con esto? Yo siempre trabajé con MySQL...

Desde ya, muchas gracias.
  #2 (permalink)  
Antiguo 19/10/2012, 22:08
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.064
Antigüedad: 11 años, 9 meses
Puntos: 2215
Respuesta: PHP - SQL Server

El acceso a MS SQL debe habilitarse en php, lee esto: http://www.php.net/manual/es/mssql.requirements.php
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 20/10/2012, 12:26
 
Fecha de Ingreso: mayo-2003
Mensajes: 509
Antigüedad: 17 años
Puntos: 6
Respuesta: PHP - SQL Server

Triby muchas gracias por tu respuesta, me ha sido muy útil ya que siguiendo la página de PHP y los enlaces que allí se encuentran he logrado hacer la conexión con SQL Server.

Ahora bien, una vez conectado me esperaba que me resulte fácil trabajar con SQL Server. Yo estoy acostumbrado a trabajar con MySQL, con las funciones mysql_connect, mysql_select_db, mysql_query, mysql_fetch_array, etc.
Y como sabía que existían sus equivalentes para SQL Server: mssql_connect, mssql_query, etc. pensé que iba a ser casi lo mismo programar contra una base de datos que contra otra.
Pero me encuentro con que esas funciones aparentemente ya no existen y hay que usar unas nuevas: sqlsrv_connect, sqlsrv_query, etc. que son bastante diferentes. O sea que antes de ponerme a hacer algo voy a tener que aprender un montón de cosas nuevas y perder bastante tiempo por lo que veo.

¿Estoy acertado, o hay alguna manera de programar en PHP de forma transparente al motor de base de datos?
  #4 (permalink)  
Antiguo 20/10/2012, 12:49
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 9 años, 4 meses
Puntos: 206
Respuesta: PHP - SQL Server

Hacer un motor de SQL transparente a la base de datos es fundamental.
Así, si un día quieres cambiar de base de datos, sólo tendrás que tocar un archivo.

Para ello, se crea una interface (o clase totalmente abstracta) con los métodos generales de gestión de bases de datos (conectarse, desconectarse, hacer una consulta, etc).

Luego, por cada tipo de base de datos que exista, se crea una nueva clase que herede de la interfaz, y se programan sus métodos finales utilizando las funciones que te proporcione tu base de datos (mysql, microsoft sql server, oracle, etc).

Aquí tienes un ejemplo de implementación de bases de datos en MYSQL y MS SQL SERVER:

http://www.shapeshifter.se/2008/08/0...rface-for-php/


En ese enlace no lo pone, pero como toque final, se suele seguir el patrón factoría para crear conexiones.
Sería algo así:


Código PHP:
Ver original
  1. <?php
  2. require_once('db_mysql.inc');
  3. require_once('db_mssql.inc');
  4.  
  5. class Connectors
  6. {
  7.   const MYSQL = 0;
  8.   const MSSQL = 1;
  9.  
  10.   static public function getConnection($type,$host,$username,$password,$db)
  11.   {
  12.       switch($type)
  13.       {
  14.         case self::MYSQL:
  15.           return new MySQLConnector($host, $username, $password, $db);
  16.         case self::MSSQL:
  17.           RETURN new MSSQLConnector($host, $username, $password, $db);
  18.       }
  19.       return null;
  20.   }
  21. }
  22. ?>

Por último, donde necesites una conexión a la base de datos en tu propio PHP, usas:

Código PHP:
Ver original
  1. <?php
  2. require_once('Connectors.php');
  3.  
  4. //CODIGO
  5.  
  6. $conectorBD=Connectors::getConnection(Connectors::MYSQL);
  7.  
  8. //MAS CODIGO
  9. ?>

Y si en el futuro, tienes que cambiar de base de datos, por ejemplo a MS SQL, solo tendrías que cambiar la línea a:

$conectorBD=Connectors::getConnection(Connectors:: MSSQL);


El resto del PHP, funcionaría igual.

Última edición por marlanga; 20/10/2012 a las 13:08
  #5 (permalink)  
Antiguo 20/10/2012, 15:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 14 años
Puntos: 2135
Respuesta: PHP - SQL Server

Si bien lo que dice @marlanga, es correcto, lo mejor es trabajar con algo ya establecido, PHP dispone para ti PDO, que precisamente es un motor de acceso a bases de datos que soporta varios RDBMS, como Oracle, ODBC, MSSQL, MySQL, PostgreSQL, y SQLlite entre otros.

Etiquetas: mysql, server, sql
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 20:25.