2013-02-15 74 views
0

试图调用MSSQL存储过程。 过程基本上是这样的: USE [数据库] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO使用PDO不工作调用MSSQL存储过程

ALTER过程[DBO] [StoredProcedure的] (@username VARCHAR(10))作为

SELECT * FROM '表名' 其中userfield = @username


PHP Code 
$username = 'username'; 
try { 
    $connection = new PDO('odbc:Driver={SQL Server Native Client 10.0};Server={SERVER};Database={DATABASE};Uid={USER};Pwd={PASSWORD}', 'USER', 'PASSWORD'); 
} 
catch(PDOException $e) { 
    echo 'Connection Failed :'.$e->getMessage().PHP_EOL; 
    echo 'Please contact the application administrator'; 
} 

$stm = $connection->prepare("CALL STOREDPROCEDURE(?)"); 
$stm->bindParam(1, $username, PDO::PARAM_STR, 10); 
$stm->execute(); 
$results = $stm->fetchAll(); 
var_dump($results); 

输出结果是:array(0){} 此数据库中有大量数据。

我知道连接数据库的工作原理,当我更改连接失败时数据库的名称。

但是,当我更改我的(调用ADanE1Username)行中的存储过程的名称时,结果中没有任何更改。

任何帮助,将不胜感激。谢谢。

+1

你有没有运行该代码在运行SQL事件探查器对目标数据库,以确保查询/程序实际上是射击? – 2013-02-15 17:28:57

+0

我没有。我以前也没有使用过SQL Profile。我会看看,看看会发生什么。我想知道该过程是否正在解雇,因为我可以在代码中更改其名称,并且在我的结果中不会发生任何事情,或者在Eclipse调试器中指出什么是错误的。 – guppster01 2013-02-15 17:49:50

+0

当我运行探查器时,我看到一个SP:Starting EventClass。文本数据读取:exec [sys] .sp_sproc_columns_110 N'STOREDPROCEDURE',@ odbcver = 3。我应该期望exec之后的信息成为正确存储过程数据库的途径吗?再次在这个菜鸟。我不知道这个价值会有什么期望。 – guppster01 2013-02-15 19:52:47

回答

2

与SQL Server必须使用

$stm = $connection->prepare("EXEC STOREDPROCEDURE(?)"); 

EXECUTE (Transact-SQL)

+0

感谢您的快速响应。我试过了,得到相同的结果。 – guppster01 2013-02-15 17:42:32