从 PHP 向 Microsoft SQL 服务器发出执行存储过程的问题
Issue executing stored procedure from PHP to a Microsoft SQL SERVER
我正在使用代码启动器框架。我一直在尝试执行我在 Microsoft SQL Server 2008 上从 PHP 编写的存储过程(无参数),但出现错误。此存储过程在 Microsoft SQL 服务器上运行良好,没有错误。
我正在使用 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("procedure_name parameter_1, parameter_2");
我在使用 sqlsrv 驱动程序连接到 MS SQL Server 2008 时也遇到了类似的问题。使用以下代码解决了我的问题:
$result = $this->db->query("PROCEDURE_NAME {$param_1}, {$param_2}")
->result_array();
我有这个可以帮助那里的人=]
一段时间以来,我一直被类似的错误绊倒。问题是执行存储的 rpocedure returned 状态代码 01000/0,这不是错误而是警告,但仍然不知道为什么会 returned。
无论如何,问题是 SP 是一个简单的 select,每当我用查询工具运行它时,select 工作得很好,甚至调用这个 select来自 php 和 codeigniter return 正确编辑的值,但是当我尝试使用存储过程时,它一直失败。
终于让它工作了,解决方案是简单地将 return 警告标记为错误。这是示例代码:
$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);
就是这样。希望对您有所帮助
我在 codeigniter 中面临从 sql 服务器存储过程获取数据的问题,但最终解决了它。
$sync= $this->load->database('sync', TRUE);
$query = $sync->query('PROCEDURE_NAME')->result_array();
echo '<pre>';
print_r($query);
我正在使用代码启动器框架。我一直在尝试执行我在 Microsoft SQL Server 2008 上从 PHP 编写的存储过程(无参数),但出现错误。此存储过程在 Microsoft SQL 服务器上运行良好,没有错误。 我正在使用 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("procedure_name parameter_1, parameter_2");
我在使用 sqlsrv 驱动程序连接到 MS SQL Server 2008 时也遇到了类似的问题。使用以下代码解决了我的问题:
$result = $this->db->query("PROCEDURE_NAME {$param_1}, {$param_2}")
->result_array();
我有这个可以帮助那里的人=]
一段时间以来,我一直被类似的错误绊倒。问题是执行存储的 rpocedure returned 状态代码 01000/0,这不是错误而是警告,但仍然不知道为什么会 returned。
无论如何,问题是 SP 是一个简单的 select,每当我用查询工具运行它时,select 工作得很好,甚至调用这个 select来自 php 和 codeigniter return 正确编辑的值,但是当我尝试使用存储过程时,它一直失败。
终于让它工作了,解决方案是简单地将 return 警告标记为错误。这是示例代码:
$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);
就是这样。希望对您有所帮助
我在 codeigniter 中面临从 sql 服务器存储过程获取数据的问题,但最终解决了它。
$sync= $this->load->database('sync', TRUE);
$query = $sync->query('PROCEDURE_NAME')->result_array();
echo '<pre>';
print_r($query);