解决方案:存储过程不返回数据,但它能创建和填充另一个表。所以在存储过程运行中创建临时表。该临时表将保存存储过程中生成的结果集,在遍历游标时,用insert保存每条数据到临时表中。后续调用时可以用select语句查询临时表中的存储过程运行结果。
以下有 三种方式 使用游标创建一个存储过程,统计某一部门下的员工信息
方法一:Loop循环
调用存储过程:
方法二:While 循环
调用存储过程:
方法三:REPEAT 循环
调用存储过程:
上述三种实现方法在测试过程中遇到下述问题。
调用存储过程查询临时表输出结果时,会发现多循环了一次,像这样:
解决方法:
在遍历游标查询结果时,先判断游标的结束标志(done) 是否是为1,如果不是1,则向临时表中插入数据。
你刚才的截图的:$db=newmysqli(.....)
new是初始化mysqli类的意思
你用的是类对吧
你用的是mysqli类,如果你需要把查询结果读到数组,你是不可以使用mysqli_fetch_array等函数的(因为类会把函数封装,过程函数是没办法用的)。
你只能使用你这个类里面的函数,去看看这个类应该有把查询结果读到数组的函数的。
----------------------------------------------------------------------------------------------------------------------
如果你用的是过程,那么应该这么写:
<?php
mysql_connect('127.0.0.1','root','123456')
//连接数据库,主机名127.0.0.1,用户名root,密码123456
mysql_select_db('phpmyadmin')
//选择数据库phpmyadmin
$user=$_POST['uid']
//把post的uid保存为user变量
$sql="select
*
from
userinfo
where
username='$user'"
//定义sql语句
$query=mysql_query($sql)
//执行,并保存为变量
$row=mysql_fetch_array($query)
//把执行结果保存为变量
echo
$row['sex']
//输出一个做测试
?>
如果不行,你可以把mysql换成mysqli
mysql中把一个查询结果当作另一个表来查询可用as关键字先将查询结果作为一个临时表,然后使用select语句查询结果集即可。例如:
SELECT UserId FROM
(
SELECT UserId
FROM OrderInfo
GROUP BY UserId HAVING SUM(Amount)>30)
AS table1
以上sql语句实现查询订单表中购买数量超过30的用户编号UserId,OrderInfo为订单表,查询结果作为临时表table1,然后从临时表中查询userid。
扩展资料
mysql中as用法介绍:用作、当成,作为;一般是重命名列名或者表名。(主要为了查询方便)
例如:
1、select column_1 as 列1,column_2 as 列2 from text as 表
解释:选择 column_1 作为 列1,column_2 作为 列2 从 text 当成 表。
2、select * from blog as B
解析:查找所有blog 表里面的数据,并把blog表格命名为 B。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)