tain198127 发表于 2015-6-26 18:34:48

关于CI中调用MYSQL存储过程的返回值出错问题

环境:
OS:MAC OS X 10.10.3
DB:MYSQL 5.6.2
SERVER:APACHE 2.4.10
SOFT:PHP5.5.18
FRAMEWORK:CI3

步骤:
1:在MYSQL中写好存储过程
已经在workbench中验证过没有问题;
使用格式如下

set @SUCCESS = 0;
call srx.login('15811374091', '123456', @SUCCESS);
select @SUCCESS;


会返回一个SELECT结果,和@SUCCESS这个参数

2:CI的model中调用这个存储过程

function login($cellphone, $pwd, &$login_code)
{
    $c = $this->db->escape($cellphone);
    $p=$this->db->escape($pwd);
    $sql = sprintf("
      call srx.login(%s,%s,@SUCCESS);
    ",$c,$p);

    $result = $this->db->query($sql)->result();

    //$login_code = $this->db->query('SELECT @SUCCESS AS CODE;');

    return $result;
}
我已经把出错的语句注掉了,可以保证执行通过,但是我还想获得@SUCCESS这个返回值。
一旦我取消注释,调用后就会给出如下的错我
A Database Error OccurredError Number: 1064You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT @SUCCESS AS CODE' at line 2call srx.login('15811374091','12345',@SUCCESS); SELECT @SUCCESS AS CODE;Filename: models/User.phpLine Number: 39
难道不能在CI中用这种方式获取返回值么?只能手动的用mysqli么?
已经百度和谷歌了,貌似都是这么写的。难道CI中不能这么写么?

页: [1]
查看完整版本: 关于CI中调用MYSQL存储过程的返回值出错问题