INFORMACION:
Que es PHP:(acrónimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de código abierto muy popular especialmente adecuado para el desarrollo web y que puede ser incrustado en HTML.
Que es SQL Server: es un sistema de gestión de bases de datos relacionales (RDBMS) de Microsoft que está diseñado para el entorno empresarial.
Es poco comun trabajar Sql Server con PHP pero las todo es posible asi pues en este tutorial mostrare los pasos a seguir para lograrlo. Ademas intentare mostrar algunos errores que pueden suceder para poder ayudar a los que se guien por este tutorial.
|
Versiones a utilizar:
- PHP version 5.5.27
- SQL Server 2012 Servipack 1
https://www.microsoft.com/en-us/download/details.aspx?id=20098
Encontramos
varias versiones disponibles. La que utilizaremos dependera de la version de
PHP que estemos utilizando.
Para
saber cual nesecitamos basta con ver las caracteristicas de nuestro PHP “phpinfo()” y notar las areas siguientes: (colocar en un archivo php "phpinfo();" y ejecutarlo en el explorador).
Dependiendo de estos dos valores eligiremos nuestros archivos. En mi
caso seran:
php_pdo_sqlsrv_55_ts.dll
php_sqlsrv_55_ts.dll
Esto es por la version de php y thead safety (enable), si no se
elegirian los dll con “nts” y la version de php que corresponda.
Les
muestro un cuadro donde se detalla las versiones de php que trae incluido cada
exe que se puede descargar.
1. Ahora solo debemos pegar los dll
seleccionados en la carpeta ext de php. Donde encontrar esta carpeta dependera
de como hayas instalado php. En xamp puede que la localizacion sea la siguiente:
C:\xampp\php\ext. Pero como dije antes depende de como instalastes PHP.
1. Lo que sigue es agregar las
siguientes lineas a nuestro php.ini, lo encontraremos en la carpeta de intalacion de PHP en xamp C:\xampp\php.
[PHP_SQLSRV]
extension=php_sqlsrv_55_ts.dll
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_55_ts.dll
Echo esto solo tenemos que reiniciar nuestro apache y veremos en la
informacion de nuestro php lo siguiente: (colocar en un archivo php "phpinfo();" y ejecutarlo en el explorador).
1. Lo ultimo que tenemos que hacer es
probar la conexión, para eso utilizaremos el siguiente codigo:
<?php
$serverName =
"localhost";
$connectionInfo =
array("Database" => "test");
$conn =
sqlsrv_connect($serverName, $connectionInfo);
if ($conn) {
echo "Conexión
exitosa ...";
} else {
echo "Conexión no
se realizada ...";
die(print_r(sqlsrv_errors(), true));
}
?>
NOTA:
al omitir usuario y contrasena la conexión se intentara usando autenticacion de
windows. Si deseas ejemplos compleros puedes visitar: http://php.net/manual/es/function.sqlsrv-connect.php
Al ejecutar nuestro codigo notamos un error de facil solucion. (Posiblemente)
Conexión no se realizada
...Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] =>
-49 [code] => -49 [2] => This extension requires the Microsoft ODBC
Driver 11 for SQL Server. Access the following URL to download the ODBC Driver
11 for SQL Server for x86: http://go.microsoft.com/fwlink/?LinkId=163712
[message] => This extension requires the Microsoft ODBC Driver 11 for SQL
Server. Access
the following URL to download the ODBC Driver 11 for SQL Server for x86:http://go.microsoft.com/fwlink/?LinkId=163712 ) [1] => Array ( [0] =>
IM002 [SQLSTATE] => IM002 [1] => 0 [code] => 0 [2] =>
[Microsoft][Administrador de controladores ODBC] No se encuentra el nombre del
origen de datos y no se especific� ning�n
controlador predeterminado [message] => [Microsoft][Administrador de
controladores ODBC] No se encuentra el nombre del origen de datos y no se
especific� ning�n controlador
predeterminado ) )
Este error es de facil solicion, solo tenemos que descargar el ODBC Driver que nos recomienda del link que nos proporciona y listo. Esto error es porque estoy utilizando la version 3.2 de los drivers.
Cuando solucionamos esto nos mostrara un mensaje de excito…
Si lo que deseas es autenticacion con usuario y
contrasena solo tienes que usar el codigo siguiente:
<?php
$serverName = "localhost";
$connectionInfo =
array("Database" => "test", "UID" =>
"ortr", "PWD" => "password");
$conn = sqlsrv_connect($serverName,
$connectionInfo);
if ($conn) {
echo "Conexión excitosa
...";
} else {
echo "Conexión no realizada
...";
die(print_r(sqlsrv_errors(),
true));
}
?>
Si nos resulta este error es porque nuestro usuario no tiene los
permisos necesarios.
Conexión no realizada
...Array ( [0] => Array ( [0] => 28000 [SQLSTATE] => 28000 [1] =>
18456 [code] => 18456 [2] => [Microsoft][ODBC Driver 11 for SQL
Server][SQL Server]Error de inicio de sesi�n del usuario 'ortr'.
[message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Error de
inicio de sesi�n del usuario 'ortr'. ) [1] => Array ( [0]
=> 42000 [SQLSTATE] => 42000 [1] => 4060 [code] => 4060 [2] =>
[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]No se puede abrir la base
de datos "test" solicitada por el inicio de sesi�n.
Error de inicio de sesi�n. [message] => [Microsoft][ODBC Driver
11 for SQL Server][SQL Server]No se puede abrir la base de datos
"test" solicitada por el inicio de sesi�n. Error de inicio de sesi�n.
) [2] => Array ( [0] => 28000 [SQLSTATE] => 28000 [1] => 18456
[code] => 18456 [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL
Server]Error de inicio de sesi�n del usuario 'ortr'.
[message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Error de
inicio de sesi�n del usuario 'ortr'. ) [3] => Array ( [0]
=> 42000 [SQLSTATE] => 42000 [1] => 4060 [code] => 4060 [2] =>
[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]No se puede abrir la base
de datos "test" solicitada por el inicio de sesi�n.
Error de inicio de sesi�n. [message] => [Microsoft][ODBC Driver
11 for SQL Server][SQL Server]No se puede abrir la base de datos
"test" solicitada por el inicio de sesi�n. Error de inicio de sesi�n.
) )
Solo
tenemos que ir a la parte de seguridad de
SQL y localizar nuestro ususario y en las propiedades hacer un pequeño cambio.
Solo
tenemos que agregar a los roles “sysadmin” y con eso el error sera solucionado.
Solo
tenemos que agregar el role “sysadmin” y con eso el error sera solucionado. Espero les sea de utilidad este pequenho tutorial, si tienes dudas comenten y les respondere lo mas rapido que posible.
0 comentarios:
Publicar un comentario