如何在PHP Codeigniter中获取带有临时表的MSSQL存储过程的结果

时间:2017-05-15 11:38:34

标签: php sql sql-server codeigniter stored-functions

我正在使用Codeigniter 3.1,我想从Microsoft SQL Server中获取存储过程的结果。但我无法得到任何结果

存储过程脚本:

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>=@DateAs and MsgDate<=@DateTo

 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中选择

1 个答案:

答案 0 :(得分:1)

当您尝试执行代码时,是否收到任何错误消息?

根据您提供的代码,您可能遇到一些问题,并且调用可能取决于您在配置中使用的数据库驱动程序(例如:pdo)。首先,在print_r语句中,您调用的是一个看似不存在的变量。所以,快速尝试一下:

print_r($result->result_array());

此外,传递参数的方式可能会导致问题(单引号)。试试这些,看看哪个有效。

方法一:

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

方法二:

$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?