在PHP PDO中调用存储过程时未定义的索引

时间:2018-03-19 03:11:46

标签: php mysql stored-procedures pdo prepared-statement

我试图调用存储过程getMarks()并在我的php页面上显示它。该代码在phpmyadmin中运行良好。但是,当我试图在我的php页面上显示它时,它会调用未定义的索引:student_name。

这是我的存储过程getMarks():

BEGIN

    SET group_concat_max_len=5058;
    SET @condition = 'MAX(CASE WHEN assessment_type = ''@at'' AND assessmet_no = @an THEN assessment_marks END) as @at@an';

    SELECT @conditions := GROUP_CONCAT(DISTINCT REPLACE(REPLACE(@condition, '@at', assessment_type), '@an', assessmet_no))
    FROM studentmarks;

    SET @sql = CONCAT('
    SELECT student_name, ', @conditions, ' 
    FROM studentmarks
    GROUP BY student_name');

    PREPARE stmt FROM @sql;
    EXECUTE stmt;


END

这是我的PHP代码:

$pstmt = 'call getMarks()';

$stmt = $dbh->prepare($pstmt);

$stmt->execute();
$item = $stmt->fetchAll(PDO::FETCH_ASSOC);

然后,我想在另一个php页面上显示这样的结果:

<?php foreach($item as $marks): ?>
<tr>
<td><?php echo $marks['student_name']; ?></td>
</tr>
<?php endforeach; ?>

不幸的是,错误未定义索引:student_name被调用。

如果我在phpmyadmin上执行它,我的程序结果如何

+---------------+------------+----------+
|  student_name |  QUIZ1     |   QUIZ2  |
+---------------+------------+----------+
|  thaqif       |  4.00      |   5.oo   |
+---------------+------------+----------+
|  ajis         |  4.00      |   5.00   |
+---------------+------------+----------+

这是与我的问题类似的最接近的问题,但仍然没有我的问题的解决方案。

How to use SQL prepared statement in php pdo

0 个答案:

没有答案