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中如何实现,希望哪位能给个范例,谢谢!
5 个解决方案
#1
一样的方法,先执行 mysql_query(call user_degree('test',@test))
然后再执行 mysql_query(select @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去咨询一下。
建议到PHP去咨询一下。
#4
$degree是一个行集。肯定不行。
应该$degree[0]或什么之类的。
应该$degree[0]或什么之类的。
#5
谢谢各位的回答~~
#1
一样的方法,先执行 mysql_query(call user_degree('test',@test))
然后再执行 mysql_query(select @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去咨询一下。
建议到PHP去咨询一下。
#4
$degree是一个行集。肯定不行。
应该$degree[0]或什么之类的。
应该$degree[0]或什么之类的。
#5
谢谢各位的回答~~