0

我的连接已建立,我可以调用我的存储过程:

$pid = $_GET['pid'];
$conn = mssql_connect($server, $username, $password);
...
mssql_select_db('mydb',$conn);

$sproc = mssql_init('consultGetPatientData');
mssql_bind($sproc, '@pid', $pid, SQLINT2);

$result = mssql_execute($sproc);
echo mssql_num_rows($result);
if($result){    
    $row = mssql_fetch_assoc($result);      
...

我的$pid值被正确传递。$result值为var_dump:_

resource(3) of type (mssql result) 

msql_num_rows($result)产生 0 行。

连接到数据库的用户对consultGetPatientData存储过程有足够的访问权限:

特性

当我手动运行存储过程时,将返回所需的结果。我的

我的问题:

有没有更好的方法来调试这些类型的错误?

有什么明显的我想念的吗?

谢谢你。

编辑:按要求存储过程代码:

ALTER PROCEDURE [dbo].[consultGetPatientData] 
    @pid int = 0    
AS
BEGIN   
    SET NOCOUNT ON;

select 
    pd.pid, 
    pd.external_id,
    pd.fname, 
    pd.lname, 
    pd.DOB, 
    pd.ss, 
    pd.sex,
    pd.allergies,
    pb.date,
    pb.release
from 
    patient_data pd 
        inner join patient_booking_data pb on pd.pid = pb.pid
where 
    pd.pid = @pid
    and pb.date in (
        select MAX(date) from patient_booking_data where pid = @pid
    )
END
4

1 回答 1

3

改变这个:

$sproc = mssql_init('consultGetPatientData');
mssql_bind($sproc, '@pid', $pid, SQLINT2);

$result = mssql_execute($sproc);
echo mssql_num_rows($result);

对此:

$result=mssql_query("consultGetPatientData ".$pid.""); 
echo mssql_num_rows($result);

while($arr = mssql_fetch_assoc($result))
{
 echo $arr['sex']."</br>"; 
 //you can put the rest of the code to display the rest of the fields
} 
于 2013-11-04T16:32:36.580 回答