【发布时间】:2020-01-29 18:13:46
【问题描述】:
我正在使用 mariaDB,codeigniter php
但是当我使用 php codeigniter 运行相同的程序时,它会返回不同的结果集。
array(1) {
[0]=>
array(1) {
[0]=>
array(2) {
["stuScore"]=> string(7) "44.0000"
["answerdQues"]=> string(2) "50"
}
}
}
过程中的查询...
SELECT sum(Score) as stuScore, count(distinct ta1.idTestQuestion) as answerdQues
FROM (select ta0.*, @running_time := if(@running_student = idStudent, @running_time, 0) + ta0.TimeTaken, date_add(ta0.StartTime, INTERVAL @running_time SECOND) as running_time, @running_student := idStudent
from (select tap.idStudent, ta.score, ta.idTestQuestion, tap.StartTime, ta.TimeTaken
from `testanswerpaper` tap
left join testanswer ta on ta.idTestAnswerPaper = tap.idTestAnswerPaper and (ta.Status = 'Flagged' || ta.Status = 'Answered')
where tap.`idTestQuestionPaper` = TestQuestionPaperID
order by tap.idStudent, ta.SortOrder, ta.idTestAnswer
) ta0
join (select @running_time := 0, @running_student) running
) ta1
join student s on s.idStudent = ta1.idStudent
join user u on s.idUser = u.idUser
WHERE ta1.running_time <= now()
group by ta1.idStudent
order by stuScore desc, answerdQues DESC;
php代码是
$this->readDB = $this->load->database('read', TRUE);
$connectId = $this->readDB->conn_id ;
$sql = "call GetLeaderBoardData($TestQuestionPaperID);";
if (mysqli_multi_query($connectId,$sql))
{
do
{
// Store first result set
if ($result=mysqli_store_result($connectId)) {
$resultArray[] = mysqli_fetch_all($result, MYSQLI_ASSOC);
}
} while (mysqli_next_result($connectId));
}
var_dump($resultArray);
【问题讨论】:
-
谁能帮帮我
-
你为什么在 CodeIgniter 中使用 mysql 原始查询。您是否尝试过使用 $this->db->query( $sql ) ?
-
你确定TestQuestionPaperID在PHP查询和数据库调用过程中是一样的吗?
-
你想用这个存储过程做什么。最有可能的是,变量没有被执行(根据您对执行顺序的理解)。无论如何,这里给出了一些解释:stackoverflow.com/a/53465139 如果你需要帮助,你需要设置一个 Fiddle 和一些示例数据来玩。请阅读:Why should I provide a Minimal Reproducible Example for a very simple SQL query?
-
还需要完整的程序代码
标签: php sql codeigniter mariadb mariasql