2017-05-15 5 views
0

Codeigniter 3.1을 사용하고 있으며 Microsoft SQL Server의 저장 프로 시저에서 결과를 얻고 싶습니다.PHP에서 임시 테이블을 사용하여 MSSQL 저장 프로 시저의 결과를 얻는 방법 Codeigniter

ALTER procedure [dbo].[SendPost_All_Periodic] 
@DateAs nvarchar(10), 
@DateTo nvarchar(10) 
as 
begin 


DECLARE @temptable TABLE (MsgDate nvarchar(10),Saat tinyint) 

INSERT INTO @temptable 
SELECT MsgDate,CAST(LEFT(MsgTime, 2) AS int) as Saat2 
FROM dbo.TMessage 
Where MsgDate>[email protected] and MsgDate<[email protected] 

Select Saat,count(Saat)as CountSend from @temptable 
group by Saat 
order by Saat 

end 

내 PHP 코드 :하지만 난 어떤 결과를

저장 프로 시저 스크립트를 얻을 수

$DateAs = "2017/01/02"; 

$DateTo = "2017/01/03"; 

$result = $this->db->query("SendPost_All_Periodic '{$DateAs}', '{$DateTo}'"); 

print_r($publishtime->result_array()); 

하지만 정상이 방법에서 선택 사용할 때,이 코드는 결과를 생성, 하지만 TempTable에서 선택한 것보다 결과를 얻을 수 없습니다.

답변

0

코드를 실행하려고하면 오류 메시지가 나타 납니까?

제공 한 코드에 따르면 몇 가지 문제가있을 수 있으며 구성 (예 : pdo)에서 사용중인 데이터베이스 드라이버에 따라 통화가 달라질 수 있습니다. 첫째, 귀하의 print_r 진술에서, 당신은 겉으로는 존재하지 않는 변수를 호출하고 있습니다.

print_r($result->result_array()); 

또한, 당신이 당신의 매개 변수를 전달하는 방법은 문제 (작은 따옴표)를 발생할 수 있습니다 : 그래서,이에게 빠른 시도를 제공합니다. 이 두 가지를 모두 시도해보고 어떤 것이 작동하는지 확인하십시오.

방법 1 :

$result = $this->db->query("SendPost_All_Periodic {$DateAs}, {$DateTo}"); 
print_r($result->result_array()); 

방법 2 :

$result = $this->db->query("EXEC SendPost_All_Periodic @DateAs='$DateAs', @DateTo='$DateTo'"); 
print_r($result->result_array()); 

는 희망이 도움이됩니다. 그렇다면 어느 것이 작동하는지 알려주십시오. 그렇지 않은 경우이 Stackoverflow 문서에서 올바른 방향으로 사용자를 안내하는지 확인하십시오. How to call a stored procedure in CodeIgniter?