Archivo de la etiqueta: SQL

Configurar Conexión SQL Server con PHP (PHP + SQL Server 2008)

Una guía para realizar una conexión a una base de datos SQL Server mediante el lenguaje de programación PHP, la cual me decidí a realizar debido a que no encontré  mucha documentación para este curioso caso. 😉

Espero les sea de utilidad.

Entorno de trabajo:

  1. SQL Server 2008
  2. Servidor Independiente de Plataforma XAMPP (Apache) V3.1.0.3.1.0
  3. PHP Versión 5.4.7
  4. Windows 7

Primer Paso:

Debemos de descargar el driver oficial ofrecido por Microsoft, el cual se encuentra actualmente en su versión 3.0.

Lo pueden buscar en google o pueden acceder dando clic aquí.

Existen 2 versiones la 2.0 y la 3.0, ¿cuál usamos ? eso depende del Sistema Operativo que estemos utilizando, podemos ver las especificaciones, pongo la imágen de los requerimientos para el driver versión 3.0.

php sql server 1

Después de descargar los driver pasamos a descomprimir la carpeta, la cual contiene 8 archivos  con extensión .dll para la versión 5.3 y 5.4, además de unos pequeños instructivos.

ficheros dll

¿ Qué archivos utilizaremos ?

Para ello podemos crear  un fichero .php con la instrucción phpinfo(); para ver las caracterísitcas de la versión PHP que tengamos instalada. Este quedaría de la siguiente manera.

php info code

Abrimos con el navegador el fichero php para ver la información, de toda esa información nos interesan 2 cosas, que son las que nos servirán para identificar que ficheros .dll necesitamos. Las cuales son:

Compiler : en mi caso MSVC9 (Visual C++ 2008) .

compiler

Thread Safety: en mi caso su valor es enabled.

ts

Dependiendo de esos dos valores elegimos los dos archivos dll que nos serviran,  en mi caso:

php_pdo_sqlsrv_54_ts.dll

php_sqlsrv_54_ts.dll

54 por que mi versión PHP es la 5.4 y _ts por que mi versión PHP es thread safe ( Thread Safety  enabled).

Después de borrar los dll que no me sirve me queda así.

ficheros elegidos

Ahora que ya sabemos que archivos nos servirán debemos de pegarlos en la carpeta ext de php:

En mi caso la ruta es la siguiente: C:\xampp\php\ext

Hecho esto,  debemos de habilitar esos drivers en el archivo de configuración de PHP, el archivo php.ini

Para  abrimos el archivo con nuestro editor de texto favorito, nos situamos al final del documento y agregamos las siguientes líneas. Nuevamente recuerden que debe de tomar en cuenta su versión php (5.4 o 5.3) y si es thread safe o no lo es.

Para mi caso queda así:

php ini

Les dejo las posibles combinaciones para nuestro archivo de configuración dependiendo de la versión php y si son thread safe o no:

php ini 2

php ini 3

Hecho esto guardamos los cambios en el archivo php.ini y reiniciamos nuestro servicio de Apache.

Si consultamos la información mediante phpinfo() ya nos debe de aparecer el driver ya habilitado, de lo contrario debemos de revisar si hemos elegido bien los archivos .dll y haber escrito bien el archivo de configuración.

finalRealizando una consulta:

El driver proporcionado por Microsoft nos permite 2 tipos de autenticación:

  1. Autenticación de Windows
  2. Autenticación SQL Server

En el siguiente código muestro como acceder a una base de datos SQL Server mediante la autenticación de SQL Server.


<?php
/* Nombre del servidor. */
$serverName = "(local)";
/* Usuario y clave.  */
$uid = "juan";
$pwd = "123";
/* Array asociativo con la información de la conexion */
$connectionInfo = array( "UID"=>$uid,
"PWD"=>$pwd,
"Database"=>"BLOG");

/* Nos conectamos mediante la autenticación de SQL Server . */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "No es posible conectarse al servidor.</br>";
die( print_r( sqlsrv_errors(), true));
}

/* Query que nos mostrara el usuario con el que nos hemos conectado a la base de datos. */
$tsql = "SELECT CONVERT(varchar(32), SUSER_SNAME())";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
echo "Error al ejecutar consulta.</br>";
die( print_r( sqlsrv_errors(), true));
}
/* Mostramos el resultado. */
$row = sqlsrv_fetch_array($stmt);
echo "User login: ".$row[0]."</br>";
/* Cerramos la conexión, muy importante. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>

Básicamente de esa manera logramos conectar PHP y SQL Server, la parte más complicada es saber que archivo dll necesitamos usar,  espero que este tutorial les pueda servir de guía.

Sus aportaciones serán bienvenidas.

Saludos.

Juan Alberto.