2021-06-20 15:41:36 186次浏览 2条回答 0 悬赏 10 金钱

call user();
手动执行可以得到返回值,

但是用 createCommand 插入好像只能得到影响的行数,并不是返回值

Yii::$app->db->getLastInsertID();

得到的是 0,并不能得到最后插入的 id

  • 回答于 2021-06-22 09:19 举报

    $result = Yii::$app->db->createCommand('call user()')->queryOne();

    print_r($result);

    试试看~

    1 条回复
    回复于 2021-06-22 17:55 回复

    好的 谢谢

  • 回答于 2021-06-23 11:49 举报

    没怎么用过存储过程,但是试了一下,没用 PROCEDURE 而是用的 function 因为有返回值

    存储过程

    DELIMITER $$
    
    USE `demo`$$
    
    DROP FUNCTION IF EXISTS `insert_goods`$$
    
    CREATE DEFINER=`root`@`%` FUNCTION `insert_goods`() RETURNS INT(11)
    BEGIN
    INSERT INTO goods VALUES(NULL, "zhangsan", "123", 1);
    RETURN LAST_INSERT_ID();
    END$$
    
    DELIMITER ;
    

    调用返回

    $res = Yii::$app->db->createCommand('select insert_goods() as id')->queryScalar();
    var_dump($res);
    
您需要登录后才可以回答。登录 | 立即注册
朕的大清完了
主管

朕的大清完了

注册时间:2018-11-15
最后登录:2021-06-23
在线时长:22小时12分
  • 粉丝2
  • 金钱479
  • 威望20
  • 积分899

热门问题