post icon

Conectar y Consultar a SQL Server desde PHP sobre Windows

Mucho de este lenguaje no he escrito, uno de los motivos es que no trabajo con el hoy día pero siempre me pareció un lenguaje muy interesante y sencillo de entender su sintaxis. Anteriormente hemos visto un ejemplo muy sencillo de concatenación de variables string, hoy haremos algo más interesante: Nos conectaremos a SQL Server 2008 (también funciona con otras versiones) y haremos una consulta sencilla y lo mostraremos en el browser.

Todo esto lo haremos bajo un servidor web Apache instalado en Windows, las fuentes del php no cambiarían si lo usaramos en otro Sistema Operativo, pero si la configuración del PHP en sí sobre apache (prometo verlo más adelante este tema).

Para llevar a cabo este ejemplo doy por hecho que tienen instalado el servidor Web Apache y los módulos para PHP, veremos una pequeña configuración básica nada más. Lo primero que necesitaremos es descargarnos las “.dll” que permitirán interactuar con nuestro motor de bases de datos, ellas podemos descargarlas desde aquí. Normalmente en nuestro directorio donde se encuentra instalado el PHP, existe una carpeta llamada “ext”, en ella debemos copiar el fichero:

php_mssql.dll

La cual se encuentra en las carpetas que acabamos de descargar en un directorio con el mismo nombre. Luego en la raíz de la instalación de PHP, se encuentra un fichero llamado “php.ini“, necesitaremos editarlo con cualquier editor de textos, recomiendo notepad++. Buscamos la siguiente línea y la dejamos como vemos abajo:

extension_dir = "./ext"

Ahora sólo nos queda buscar la siguiente línea y sacarle los 2 puntos “;”

;extension=php_mssql.dll

Con esto ya tenemos preparado nuestro servidor, ahora necesitamos crear una tabla de ejemplo, en mi caso cree una base de datos llamada “DevTroce” y agregue la siguiente tabla:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
USE [DevTroce]
GO
 
/****** Object:  Table [dbo].[Clientes]    Script Date: 04/04/2010 15:18:28 ******/
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
SET ANSI_PADDING ON
GO
 
CREATE TABLE [dbo].[Clientes](
	[IdCliente] [bigint] NOT NULL,
	[Nombres] [varchar](50) NOT NULL,
	[Apellidos] [varchar](50) NOT NULL,
	[Direccion] [varchar](50) NULL,
	[Telefeono] [varchar](50) NULL,
	[Documento] [varchar](50) NOT NULL,
 CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED
(
	[IdCliente] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
 
GO
 
SET ANSI_PADDING OFF
GO

Alli pueden cargar los datos que deseen. Ahora vamos en carpeta de instalación del Apache y buscamos el directorio “htdocs“, que es justamente donde se almacenan las páginas servidas, creamos un directorio llamado “Devtroce” y dentro de él, un fichero llamado index.php.

Una vez hecho ésto podemos agregar dentro del mismo el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
try {
	## conexion a sql server...
	$link=mssql_connect("NABUCODONOSOR","sa","******");
	## seleccionamos la base de datos
	mssql_select_db("DevTroce",$link);
	## generamos el query
	$result=mssql_query("select * from Clientes",$link);
	## recorremos todos los registros
	while($row=mssql_fetch_array($result))
	{
		$counter++; 
		echo ("$counter Nombres: ".$row["Nombres"].", Direccion: " .$row["Direccion"]."<br/>"); 
		echo "<hr>";
	}
} catch (Exception $e) {
    echo "Caught Exception ('{$e->getMessage()}')\n{$e}\n";
}
## cerramos la conexion
mssql_close($link);
?>

Ahora solo resta probar lo desarrollado, en nuestro browser ponemos la siguiente direccion:

http://localhost/DevTroce/

Comentarios desde Facebook:

  1. avatar
    kike Google Chrome Windows
    12 Enero 2017 at 21:09 #

    kljsdfkljsdfjkl

  2. avatar
    CEDAGAMO PERU Google Chrome Windows
    16 Julio 2013 at 11:34 #

    Gracias por el aporte. 🙂

  3. avatar
    henry COLOMBIA Mozilla Firefox Windows
    21 Octubre 2012 at 14:59 #

    No me aparece el controlador para descargarlo.,

  4. avatar
    israel MEXICO Google Chrome Windows
    4 Diciembre 2011 at 01:28 #

    cheee! me has salvado el pellejo! queda aclarar que solo me jalo con PHP 5.1.6 y APACHE 2.0.9 con otras versiones no me jalaba !!!!

  5. avatar
    Carlos Andres Restrepo Leon COLOMBIA Mozilla Firefox Windows
    17 Octubre 2010 at 20:45 #

    Hol a gracias por el articulo muy completo logre hacerlo funcionar sin problemas aunque en algunos casos el nombre del servidor suele llamarse algo como nombre-equipo\instancia sql server y puede ser necesario actulizar la libreria ntwdlib.dll en system32 despues de hacer esto se debe reiniciar los servicios de apache y deberia funcionar yo lo lo hice sobre windows 7 y wampserver 2i con php 5.2

    Les dejo el codigo que utilice

    try {
    ## conexion a sql server…
    $link=mssql_connect(“w7\aspnet”,”sa”,”123456″);
    ## seleccionamos la base de datos
    mssql_select_db(“BD_Estudiantes”,$link);
    ## generamos el query
    $result=mssql_query(“select * from Tbl_Estudiantes”,$link);
    ## recorremos todos los registros
    while($row=mssql_fetch_array($result))
    {
    $counter++;
    echo (“$counter Nombres: “.$row[“Nombres”].”, Apellidos: ” .$row[“Apellidos”].””);
    echo “”;
    }
    } catch (Exception $e) {
    echo “Caught Exception (‘{$e->getMessage()}’)\n{$e}\n”;
    }
    ## cerramos la conexion
    mssql_close($link);

    Saludos

    • avatar
      GeekZero PARAGUAY Google Chrome Windows
      17 Octubre 2010 at 21:35 #

      Gracias Carlos por compartirlo..

    • avatar
      daniel ortega ARGENTINA Mozilla Firefox Windows
      12 Diciembre 2016 at 16:49 #

      Si bien lo que pusiste es valido , se sobre entiende que a veces podemos hacer una conexion externa mssql desde por ejemplo otro hosting hacia nuestro servidor.
      La cual utilizar el nombre del equipo no nos resuelve el problema , sino que debemos indicar la IP.

Responder