我正在使用Codeigniter版本3.1.10并将SQLSRV用作数据库驱动程序
我一直在尝试使用Codeigniter执行存储过程 我的存储过程查询为
$sp = "SP_AffniGetReports @startdate=?,@enddate=?,@interval=?,@device_id=?,@limit=?,@offset=?";
$params = array($from_date,$to_date,$rpt_time_interval,$meter_id,$offset,$limit);
$result = $this->db->query($sp,$params,false);
$result = $this -> db -> get();
遇到此错误
[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Must specify table to select from.
SELECT *
在检查了上述错误之后,我打印了Codeigniter生成的存储过程查询,并且得到了
SP_AffniGetReports @startdate='2019-06-21 12:00:01',@enddate='2019-06-27 11:05:59',@interval='60',@device_id='101',@limit=0,@offset='30'
作为编译查询!
在过去2天中,我尝试了所有修改,例如在查询和引用中使用“ EXEC”,“ CALL”。但是我无法执行存储过程。
现在,我尝试使用SQLSRV(已执行存储过程)使用普通PHP脚本运行相同的查询。我的PHP脚本是
$procedure_params = array('2019-06-10 00:00:01','2019-06-27 00:00:59','1','101','0','30');
$sql = "EXEC SP_AffniGetReports @startdate=?,@enddate=?,@interval=?,@device_id=?,@limit=?,@offset=?";
$stmt = sqlsrv_prepare($conn, $sql, $procedure_params);
我得到了结果!但是我找不到Codeigniter的存储过程的问题
答案 0 :(得分:0)
找到了为什么这个问题发生我的语法错误。代码应该是
$query = $this->db->query($sp,$params,false);
$result = $query->result();
通过使用$ result = $ this-> db-> get(); Codeigniter尝试与存储过程一起创建新查询。这是造成我问题的原因。