用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1594|回复: 0
收起左侧

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

[复制链接]
发表于 2015-6-26 18:34:48 | 显示全部楼层 |阅读模式
环境:
OS:MAC OS X 10.10.3
DB:MYSQL 5.6.2
SERVER:APACHE 2.4.10
SOFTHP5.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 Occurred

Error Number: 1064

You 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 2

call srx.login('15811374091','12345',@SUCCESS); SELECT @SUCCESS AS CODE;

Filename: models/User.php

Line Number: 39


难道不能在CI中用这种方式获取返回值么?只能手动的用mysqli么?
已经百度和谷歌了,貌似都是这么写的。难道CI中不能这么写么?

本版积分规则