如果发生多行,如何在 php mysql 的侧存储过程中执行选择查询?

Posted

技术标签:

【中文标题】如果发生多行,如何在 php mysql 的侧存储过程中执行选择查询?【英文标题】:How to excute select query in side store procedure in php mysql if there are multiple rows occurs? 【发布时间】:2013-10-11 14:26:34 【问题描述】:

如果出现多行,如何在php mysqlstore procedure中执行select query

首先我想从特定学生的a table (practice_test_result) 获取distinct (chapter_id)

然后代表distinct(chapter_id )再运行一个查询以生成关联数组

我面临的问题是:

while( row found )
/* here i perform the SELECT SUM(total_question) - SUM(total_incomplete) , SUM(total_correct) into totalattempt,talcorrect FROM practice_test_summary WHERE student_id =studentid AND chapter_id =chapterid;
set chpapter_succes-s-rate[i] =(totalcorrect * 100)/totalattempt; */


下面的代码了解更多关于我到底想要什么的问题

DELIMITER //
DROP PROCEDURE IF EXISTS get_result//
CREATE PROCEDURE get_result(studentid INT,courseid INT,out chpapter_succes-s-rate decimal(10,2))
BEGIN


SELECT distinct(chapter_id)  FROM practice_test_result WHERE course_id =courseid AND student_id =studentid;
set chapterid=chapter_id;
//here i want to use while loop for all chapter_id  and behalf of these chpater id's perform another select statement for performing succes-s-rate of specific chapter and store that into an array and return that array as out variable

SELECT SUM(total_question) - SUM(total_incomplete) , SUM(total_correct) into totalattempt,talcorrect FROM practice_test_summary WHERE student_id =studentid AND chapter_id =chapterid;

set chpapter_succes-s-rate[i] =(totalcorrect * 100)/totalattempt;


END// 

【问题讨论】:

【参考方案1】:

您想要用来生成 while 循环功能的是 mysql“游标”。

然后,您可以将每个 chapter_id “提取”到一个局部变量中,以在您的第二个 select 语句中使用。

这里是 mysql 文档的链接和一个很好的例子。

http://dev.mysql.com/doc/refman/5.0/en/cursors.html

您需要使用 DECLARE 语句修改以上内容以获取本地 chapterid 变量。

您也不能在 MySQL 存储过程中使用 chpapter_succes-s-rate[i] 作为数组。请参阅:How can I simulate an array variable in MySQL? 了解替代方案。也许临时表是一个很好的解决方法。

【讨论】:

以上是关于如果发生多行,如何在 php mysql 的侧存储过程中执行选择查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 中插入多行 PHP

如何以管理员身份登录和普通员工有不同的侧菜单

如何使用 PHP PDO 在 mySQL 中插入多行 JSON 对象数据?

如何使用 php 从多行表单更新 mysql 数据库 [关闭]

如何使用此函数从 mysql 和 PHP 获取多行

如何使用 PHP 使用复选框从 mysql 数据库中删除多行?