mssql_execute没有返回结果 - 更好的调试方法?

时间:2013-11-04 16:09:10

标签: php sql-server-2008

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

$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存储过程:

Properties

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

我的问题:

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

我有什么明显的遗失吗?

谢谢。

编辑:请求的存储过程代码:

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

1 个答案:

答案 0 :(得分: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
}