在调用存储过程时出错

时间:2013-12-02 12:17:07

标签: php mysql codeigniter stored-procedures

如果我运行这个模型程序没有存储过程调用意味着工作正常。但是如果我调用存储过程意味着抛出错误。请帮助我,我认为在调用存储过程时表示表名的方式是错误的。

模型

 <?php if (!defined('BASEPATH')) exit('No direct script access allowed');

     class Members_model extends CI_Model 
     {       
         function select_members() 
         {           
             $query = $this->db->get('users'); //Table Name
             $query = $this->db->query("CALL get_members()");// calling stored procedure
             return $query->result_array();         
         }      
     }
?>

注意:抛出错误 发生数据库错误

Error Number: 2014

Commands out of sync; you can't run this command now

UPDATE `users` SET `username` = 'ThottiJaya', `password` = '28bf' WHERE `id` = 127

Filename: C:\xampp\htdocs\system\database\DB_driver.php

Line Number: 330

2 个答案:

答案 0 :(得分:1)

根据MySQL:

  

C.5.2.14。命令不同步   如果你的命令不同步;您现在无法在客户端代码中运行此命令,您是&gt;以错误的顺序调用客户端函数。

     

例如,如果您使用mysql_use_result()并尝试在调用mysql_free_result()之前执行新查询,则会发生这种情况。如果您尝试执行两个返回数据的查询而不在其间调用mysql_use_result()或mysql_store_result(),也会发生这种情况。

我假设在调用update之前,您已经打开了一些结果集但尚未使用。因此是错误。如果您与结果无关,那么您应该拨打mysql_free_result(),然后进行update电话。

请参阅 MySQL: Commands out of sync

请参阅类似帖子
SO: Why I am getting the Error “Commands out of sync; you can't run this command now”


还有一种情况需要将mysql驱动程序更改为mysqli

请参阅类似帖子
SO: MySQL Error - Commands out of sync; you can't run this command now

希望这有帮助。

答案 1 :(得分:0)

尝试从以下位置更改配置中的数据库驱动程序:

  

$ db ['default'] ['dbdriver'] ='mysql';

  

$ db ['default'] ['dbdriver'] ='mysqli';