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 に答える