我的連接建立後,我可以打電話給我的存儲過程:mssql_execute返回沒有結果 - 更好的調試方式?
$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
讓我看看你的SP代碼... – Hackerman
添加存儲程序。 – etm124
當調試時我喜歡使用error_log()記錄每一件事情,你也可以將代碼包裝在try-catch塊中。 – meda