Bases de Datos

Ξ 59 comentarios

Cómo hacer una conexión a SQL Server con PHP

por Xabadu
Cómo hacer una conexión a SQL Server con PHP

A pesar de que MySQL es el Sistema Gestor de Base de Datos por excelencia, y el más preferido, al momento de desarrollar aplicaciones Web en PHP, en muchas ocasiones a los desarrolladores se les presenta la problemática de trabajar con otros SGBD, ya sea por un tema de recursos disponibles o bien por requerimientos del usuario final.

Cuando trabajamos con MySQL podemos notar una extrema simpleza en las funciones incluidas dentro del lenguaje que nos permiten desarrollar de forma rápida y simple. Lamentablemente para otros casos, como SQL Server, no es así, y es que a pesar de que PHP incluye funciones para realizar la conexión que en teoría deberían ser igual de simples, en la práctica muchas veces no es así.

Hoy en CLH les traemos un sencillo tutorial en donde enseñaremos a realizar una conexión a una base de datos en SQL Server desde PHP para aquellos casos.

Todo el detalle, como siempre, después del salto.

Cómo hacer una conexión a SQL Server con PHP

Nota: Antes de comenzar, una anotación importante. El tutorial presenta el proceso de conexión de PHP a SQL Server trabajando con servidores Windows. Con servidores Linux el proceso se complica un poco, aunque estamos actualmente en proceso de crear una guía al respecto que esperamos poder presentar en el futuro cercano.

Para la realización de este proceso probamos varios métodos, partiendo por la clásica función mssql_connect, la cual en más de una ocasión nos presentó problemas, por lo que investigando al respecto llegamos a la forma presentada a continuación, la cual hasta ahora nos ha presentado una efectividad del 100%, mediante el uso de una librería llamada ADOdb, la cual además de soportar SQL Server trabaja con una serie de otros SGBD como Oracle, MySQL, PostgreSQL, Access, etc.

Como siempre, lo primero:

Implementos necesarios:

  1. Un servidor Windows que soporte la ejecución de archivos PHP.
  2. Una base de datos SQL Server (para este tutorial utilizamos SQL Server 2000, si, algo desactualizado, pero no hay problemas con versiones posteriores).
  3. La librería ADOdb, que puede ser descargada del siguiente enlace.
  4. Opcionalmente un editor Web (en CLH utilizamos y recomendamos Adobe Dreamweaver, el cual pueden descargar desde el sitio de Adobe).

Nota 2: La versión a descargar por defecto de ADOdb trabaja con PHP 5.0 o superior. En caso de que en su servidor tengan una versión anterior, pueden descargar esta versión de la librería que trabaja con las versiones de PHP de la 4.1 a la 5.2

Con todo eso claro, manos a la obra:

Procedimiento:

1.- Lo primero que haremos es, una vez descargada la librería ADOdb, descomprimirla, idealmente en el mismo directorio de la aplicación que estamos desarrollando, con lo que obtendremos un directorio adodb el cual contiene una serie de subdirectorios y archivos dentro de el.

2.- A continuación, abrimos en nuestro editor Web el archivo PHP en el cual necesitamos establecer una conexión a la BD en SQL Server.

3.- Una vez que tengamos todo listo, partimos por hacer un include al archivo que contiene todas las funciones utilizadas por las clases de las distintas BD que soporta esta librería:

include("adodb/adodb.inc.php");

4.- Luego, crearemos un objeto al cual llamaremos conexion en el cual definiremos una conexión a SQL Server mediante ODBC:

$conexion = &ADONewConnection('odbc_mssql');

5.- A continuación, debemos definir mediante una cadena, un DSN o data source name (nombre de fuente de datos) equivalente a cuando hacemos una conexión normal a una BD SQL Server, para esto es importante que conozcamos la siguiente información:

  • Server: Dirección del servidor de BD.
  • Database: Base de datos donde trabajaremos.

Con eso en consideración, definimos nuestro DSN:

$datos = "Driver={ SQL Server };Server=URL-del-servidor;Database=Nombre-de-la-BD;";

6.- Y luego hacemos la conexión, a partir del objeto que creamos en el paso 4, el cual enviará como parámetros nuestro DSN (creado en el paso anterior), el nombre de usuario y la contraseña de acceso a la BD. En caso de no contar con esta información, deberemos ponernos en contacto con el administrador de la plataforma para solicitar los datos:

$conexion -> Connect($datos, 'usuario', 'contraseña');

Con eso habremos establecido una conexión a la BD y podremos operar sobre ella sin problemas.

Veamos como ejemplo hacer una consulta y recuperar algunos datos. Consideremos una tabla llamada persona que tiene 3 campos: nombre, edad, telefono y queremos recuperar todos los registros y mostrarlos por pantalla (comentarios en negrita, cursiva y entre /* y */):

include("adodb/adodb.inc.php");
/* Incluimos el archivo de funciones */

$conexion = &ADONewConnection(odbc_mssql);
/* Creamos un objeto de conexión a SQL Server */

$datos = "Driver={SQL Server};Server=localhost;Database=CLH;";
/* Definimos nuestro DSN */

$conexion->Connect($datos,'clh','clh');
/* Hacemos la conexión con los parámetros correspondientes */

$resultado = &$conexion->Execute("select * from persona");
/* Ejecutamos la consulta para recuperar los registros */

if(!$resultado)
    print $conexion->ErrorMsg( );
    /* Declaramos un if en caso de que la consulta no se haya ejecutado bien, para que nos muestre el error */
else {
    while(!$resultado->EOF) {
        /* Ejecutamos un ciclo de tipo While que realizará las operaciones hasta que el resultado de la consulta (los registros rescatados) llegue al EOF o End of File (final de los registros recuperados) */

        print $resultado->fields[0]."
";
        print $resultado->fields[1]."
";
        print $resultado->fields[2]."
";

        /* Imprimimos el resultado de la consulta. Al rescatar los registros, cada campo se agrega a un arreglo llamado fields, en el que se irán situando los campos en el orden que se rescataron */

        $resultado->MoveNext( );
        /* Avanzamos a la fila siguiente */
    }
}

$resultado->Close( );
$conexion->Close( );
/* Cerramos los objetos, este paso es opcional, pero optimiza nuestro código */

Y así de simple hemos realizado una conexión desde PHP a SQL Server, además de rescatar registros y mostrarlos por pantalla. Tan sólo con unas líneas de código hemos podido completar este procedimiento de manera rápida y sencilla.

Recuerden que como siempre este tutorial ha sido:

Cualquier duda o comentario que puedan tener, los invitamos a dejarnos unas líneas en el área habilitada a continuación.

Esperamos que este tutorial haya sido de utilidad para Uds.

Muchas gracias por leer y será hasta una próxima oportunidad

Comparte este tutorial

El culpable de todo esto

Las tardes gloriosas de domingo y las grandes ovaciones a estadio lleno, no son algo extraño para Xabadu. Luego de ser descubierto a los 4 años en un partido de barrio por los ojeadores del gran Aviación F.C., sacudió el mercado nacional al ser traspasado en $500 pesos chilenos (1 USD) y 3 coca colas al renombrado Estrella Blanca de Lolol. Luego de una impresionante carrera por equipos como Lozapenco, Santa Cruz, Deportivo Lago Chungará y una incursión en la 3a división del futbol de Kazajstan, su record imbatible hasta la fecha de 1257 goles en 20 partidos lo llevo a ser elegido como uno de los arqueros más recordados en la historia pelotera nacional. Una lesión en el colmillo superior derecho lo llevó al retiro el año 2003, pero está de vuelta y sin duda que su jerarquía y experiencia internacional será un gran aporte.

En los barrios marginales se le conoce como: Xabadu

Comentarios en Facebook

59 Comentarios

  • Hola segui los pasos pero me sale el siguiente error:

    Warning: include_once(/home/dcit/public_html/estadisticas/prueba/adodb_lite/adodbSQL_drivers/odbc_mssql/odbc_mssql_driver.inc) [function.include-once]: failed to open stream: No such file or directory in /home/dcit/public_html/estadisticas/prueba/adodb_lite/adodb.inc.php on line 53

    Warning: include_once() [function.include]: Failed opening ‘/home/dcit/public_html/estadisticas/prueba/adodb_lite/adodbSQL_drivers/odbc_mssql/odbc_mssql_driver.inc’ for inclusion (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/dcit/public_html/estadisticas/prueba/adodb_lite/adodb.inc.php on line 53

  • Fatal error: Call to undefined function mssql_connect() in C:\xampp\htdocs\sql.php on line 39

  • Gracias por el articulo me sirvio de mucho, me salvaste de una.

  • disculpa no se a que se refieren con la url del servidor

    $datos = “Driver={SQL Server};Server=servidor-pc;Database=sice;”;

    servidor-pc es el nombre que le asigne al servidor sql pero me aparece un error:

    Parse error: syntax error, unexpected ‘=’ in C:\AppServ\www\p1\p1.php on line 8

  • Saludos estoy conectandome pero me esta dando este problema cuando ejecuto la vista

    Fatal error: Call to a member function Execute() on a non-object in /home/tecnolog/public_html/server/index.php on line 24

    en esa linea tengo el siguiente código

    $resultado ->$conexion->Execute(“select * from dbo.VofertaAcademicaPermanente”);

    es una vista a la la base de datos. Agradezco de Ante mano sus Comentarios.

    • @renny

      Lo que te dice es que el objeto “$conexion” no tiene un metodo llamado “Execute”. Probablmente la conexión no se esta realizando, revisa los datos para realizarla.

  • hola tengo el mismo error que Serenity:

  • A mi me marca el siguiente error:

    Parse error: syntax error, unexpected end of file in D:\servidor_web\CONECTAR.php on line 37

    Codigo:
    html>

    Problema

    Connect($datos, ‘sa’, ‘sa’);

    $resultado -> &$conexion->Execute(‘select * from teamviewerconnection’);

    if(!$resultado)
    print $conexion->ErrorMsg();
    else
    {
    while(!$resultado -> EOF)
    {

    print $resultado -> fields[0].””;
    print $resultado -> fields[1].””;
    print $resultado -> fields[2].””;

    $resultado -> MoveNext();}
    }
    }
    $resultado->Close();
    $conexion->Close();

    ?>

  • A mi me marca el sigueite error:

    Parse error: syntax error, unexpected end of file in D:\servidor_web\CONECTAR.php on line 37

    CODIGOO:

    Problema

    Connect($datos, ‘sa’, ‘SA’);

    $resultado -> &$conexion->Execute(‘select * from viewerconnection’);

    if(!$resultado)
    print $conexion->ErrorMsg();
    else
    {
    while(!$resultado -> EOF)
    {

    print $resultado -> fields[0].””;
    print $resultado -> fields[1].””;
    print $resultado -> fields[2].””;

    $resultado -> MoveNext();}
    }
    }
    $resultado->Close();
    $conexion->Close();

    ?>

  • hola soy nuevo en php ,podrian hacer una tutorial de como hacer un siatema de logeo o login con php y base de datos en sql server 2005,tambien que cuando me logee con un usuario me muestre todos sua datos de varias tablas
    de ant mano si me sirvio el tutorial

1 2 3 4 5 6

Responder a Xabadu Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Gente linda que nos quiere

Donde mas estamos