有如下存储过程CREATE PROCEDURE user_degree(p_username varchar(21) CHARACTER SET utf8,out degree int)
Userdegree:
BEGIN
          DECLARE td int ;
          SELECT accepts INTO td FROM exercise_user WHERE  
          username= p_username;
          IF (td>800) THEN SET degree=1;
          ELSEIF (td>600) THEN SET degree=2;
          ELSEIF (td>400) THEN SET degree=3;
          ELSEIF (td>200) THEN SET degree=4;
          ELSE  SET degree=5;
          END IF;
END现在我要在php中得到degree的值 ,在CMD里面我知道可以这样mysql> call user_degree('test',@test);
Query OK, 0 rows affected (0.14 sec)mysql> select @test;
+-------+
| @test |
+-------+
|     4 |
+-------+
1 row in set (0.00 sec)但我不知道在PHP中如何实现,希望哪位能给个范例,谢谢!

解决方案 »

  1.   

    一样的方法,先执行 mysql_query(call user_degree('test',@test))
    然后再执行 mysql_query(select @test) 得到返回变量值。
      

  2.   


    我按照原来的方法返回的是 Resource id #7  
    代码如下:function userdegree1($username)
    {
    global $db;
    $query1 = "call user_degree($username,@test);";
    $db->query($query);
    $query2 = "select @test;";
    $degree = $db->query($query2);
    echo $degree;
    return $degree;
    }
      

  3.   

    你需要查一下你的PHP手册,查看一下是如何中获取 select fld1,fld2from ..中的字段信息。$degree = $db->query($query2); 你这样$degree 是哪个字段呢?建议到PHP去咨询一下。
      

  4.   

    $degree是一个行集。肯定不行。
    应该$degree[0]或什么之类的。