执行从PHP到Microsoft SQL SERVER的存储过程时出现问题

执行从PHP到Microsoft SQL SERVER的存储过程时出现问题,sql,codeigniter,sqlsrv,Sql,Codeigniter,Sqlsrv,我正在使用CodeIgniter框架。我一直在尝试执行一个存储过程(没有参数),我是在MicrosoftSQLServer2008上用PHP编写的,但我得到了一个错误。此存储过程在Microsoft SQL Server上运行良好,没有错误。 我使用sqlsrv作为驱动程序,如果有帮助的话,我有一个PHP版本5.2 这就是我得到的错误 Error Number: 01000 [Microsoft][SQL Server Native Client 10.0][SQL Server]Executi

我正在使用CodeIgniter框架。我一直在尝试执行一个存储过程(没有参数),我是在MicrosoftSQLServer2008上用PHP编写的,但我得到了一个错误。此存储过程在Microsoft SQL Server上运行良好,没有错误。 我使用sqlsrv作为驱动程序,如果有帮助的话,我有一个PHP版本5.2

这就是我得到的错误

Error Number: 01000
[Microsoft][SQL Server Native Client 10.0][SQL Server]Executing SQL directly; no cursor
Exec sp_test
下面是我的代码的一部分

function index(){
  $this->load->database();
  $query=$this->db->query("Exec sp_test");
  var_dump($query->result());
}

我将实际查询替换为实际查询,它确实可以工作,但无法使用sp调用。任何帮助都将不胜感激,我在这方面尝试了太久,但我无法让它发挥作用。谢谢

我也遇到过同样的问题。删除“EXEC”对我来说很有效


$query=$this->db->query(“过程名称参数参数参数1,参数参数参数2”)

在使用sqlsrv驱动程序连接MS SQL Server 2008时,我也遇到了类似的问题。我的问题已使用以下代码解决:

$result = $this->db->query("PROCEDURE_NAME {$param_1}, {$param_2}")
                   ->result_array();

我有一个类似的错误,我已经被一个类似的错误绊倒了一段时间。问题是,存储的rpocedure的执行返回了一个状态代码01000/0,这不是一个错误,而是一个警告,但仍然不知道返回的原因

无论如何,问题是SP是一个简单的select,每当我使用查询工具运行它时,select工作得很好,甚至使用codeigniter从php调用这个select返回正确的值,但是当我尝试使用存储过程时,它总是失败

最后,它开始工作,解决方案是简单地标记为不将警告作为错误返回。下面是一个示例代码:

 $sp = "MOBILE_COM_SP_GetCallXXX ?,?,?,?,?,?,?,?,?,? "; //No exec or call needed

 //No @ needed.  Codeigniter gets it right either way
 $params = array(
            'PARAM_1' => NULL,
            'PARAM_2' => NULL,
            'PARAM_3' => NULL,
            'PARAM_4' => NULL,
            'PARAM_5' => NULL,
            'PARAM_6' => NULL,
            'PARAM_7' => NULL,
            'PARAM_8' => NULL,
            'PARAM_9' => NULL,
            'PARAM_10' =>NULL);

 //Here's the magic...
 sqlsrv_configure('WarningsReturnAsErrors', 0);

 //Even if I don't make the connect explicitly, I can configure sqlsrv
 //and get it running using $this->db->query....

 $result = $this->db->query($sp,$params);

就这样。希望它能帮助我从Codeignator中的sql server存储过程中获取数据,但最终解决了这个问题

    $sync= $this->load->database('sync', TRUE);
    $query = $sync->query('PROCEDURE_NAME')->result_array();
    echo '<pre>';
    print_r($query);
$sync=$this->load->database('sync',TRUE);
$query=$sync->query('PROCEDURE_NAME')->result_array();
回声';
打印(查询);

帮了我的忙!谢谢!=)类似的情况也发生在我的测试平台上(不是在其他平台上!)。但不是使用存储过程,而是使用简单的“更新”。可能是由于sql_服务器配置。由于无法更改配置,此解决方案是一个很好的解决方案。先生,我遵循了您的解决方案,但在调用接受4个参数的存储过程时仍然运气不佳,但是当我在mssql查询窗口上运行存储过程时,它确实有要返回的数据返回$this->db->query(“pr_proc_1 153,1,'N','N'))->result();。它返回状态为204的“无内容”