Bom, estamos aqui, em mais uma noite em que aparece aquele problema chato que toma alguns minutos do tempo e sabedoria que deveria sempre empregada no desenvolvimento. Entendeu ? :blink: Eu também não..... :rolleyes:
Bom, direto ao assunto, como executar stored procedure no SQL Server 2005 Express usando PDO desenvolvido pela Microsoft ?
Mãos a obra:
Antes de começar, execute o codigo abaixo no seu SQL Server 2005 Express:
USE MASTER
GO
-- DROP DATABASE DBTEMP
-- GO
CREATE DATABASE DBTEMP
GO
USE DBTEMP
GO
CREATE TABLE DEMO
(
ID INT NOT NULL IDENTITY,
NOME VARCHAR(255) NULL,
DATA_REGISTRO DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
IDENTIFICADOR UNIQUEIDENTIFIER NULL,
CONSTRAINT PK_DEMO PRIMARY KEY(ID),
CONSTRAINT UQ_DEMO_IDENTIFICADOR UNIQUE(IDENTIFICADOR)
)
GO
INSERT INTO DEMO(NOME, IDENTIFICADOR) VALUES(NULL, NEWID())
INSERT INTO DEMO(NOME, IDENTIFICADOR) VALUES(NULL, NEWID())
INSERT INTO DEMO(NOME, IDENTIFICADOR) VALUES(NULL, NEWID())
INSERT INTO DEMO(NOME, IDENTIFICADOR) VALUES(NULL, NEWID())
INSERT INTO DEMO(NOME, IDENTIFICADOR) VALUES(NULL, NEWID())
GO
SELECT ID, NOME, IDENTIFICADOR, DATA_REGISTRO FROM DEMO ORDER BY ID DESC
GO
CREATE PROCEDURE GETDEMO(@ID INT) AS
SELECT
DM.ID,
DM.NOME,
DM.IDENTIFICADOR,
DM.DATA_REGISTRO
FROM
DEMO DM
WHERE
DM.ID = @ID;
GO
EXEC GETDEMO 2
GO
Se tudo correr bem, vamos adiante com o script php abaixo:
<?php
/**
PDO para SQL Server - Driver nativo da Microsoft
@date: 2010-07-16
@autor: Wellington Rodrigues
1) Baixar driver nativo http://www.microsoft.com/sqlserver/2005/en/us/PHP-Driver.aspx
2) Jogar as dlls (php_sqlsrv_52_ts_vc6.dll e php_pdo_sqlsrv_52_ts_vc6.dll) dentro dos diretórios:
C:\php
C:\php\ext
C:\windows\system
C:\windows\system32
3) Adicionar este trecho no php.ini
;**************************************
;NOVO DRIVER NATIVO DO SQL SERVER
;**************************************
extension=php_sqlsrv_52_ts_vc6.dll
extension=php_pdo_sqlsrv_52_ts_vc6.dll
;**************************************
;NOVO DRIVER NATIVO DO SQL SERVER
;**************************************
4) Reinciar o apache
5) Rodar phpinfo e conferir os itens PDO
OBS: Na minha máquina já existia a versão do SQL Server 2008 Native Client ODBC,
talvez seja necessário a instalação do mesmo em seu computador para
um funcionamento correto.
*/
if(strstr($_SERVER['QUERY_STRING'],'debug'))
{
highlight_file(__FILE__);
exit();
}
function depurar($var, $e = true)
{
printf('<pre>%s</pre>', var_export($var,true));
if(!$e)
exit();
}
try
{
$dsn = 'sqlsrv:server=HOME\\SQLEXPRESS;Database=DBTEMP';
$username = 'sa';
$password = 'x000000x';
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stm = $pdo->prepare('EXEC GETDEMO ?');
$stm->setFetchMode(PDO::FETCH_ASSOC);
$param = 1;
$stm->bindParam(1, $param);
$stm->execute();
$data = $stm->fetch();
depurar($data);
}
catch(Exception $e)
{
printf('<h1>%s</h1>', $e->getMessage());
printf('<h1>%s</h1>', $e->getTraceAsString());
}
Se não apresentar mensagem de erro, seu PHP já estará pronto para trabalhar usando o driver desenvolvido pelo Microsoft.
Um grande abraço
Editado por ursolouco removendo meu e-mail pessoal
Pergunta
ursolouco
Salve,
Bom, estamos aqui, em mais uma noite em que aparece aquele problema chato que toma alguns minutos do tempo e sabedoria que deveria sempre empregada no desenvolvimento. Entendeu ? :blink: Eu também não..... :rolleyes:
Bom, direto ao assunto, como executar stored procedure no SQL Server 2005 Express usando PDO desenvolvido pela Microsoft ?
Mãos a obra:
Antes de começar, execute o codigo abaixo no seu SQL Server 2005 Express:
Se tudo correr bem, vamos adiante com o script php abaixo:
Se não apresentar mensagem de erro, seu PHP já estará pronto para trabalhar usando o driver desenvolvido pelo Microsoft.
Um grande abraço
Editado por ursoloucoremovendo meu e-mail pessoal
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.