这不是一个重复的问题,它的不同。 我有我在MySQL中创建的存储过程,它将行转置(转动)到列,并且有n列。我希望PHP调用该存储过程并以表格形式显示..
这是我的存储过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `daily`()
BEGIN SET SESSION group_concat_max_len = (7 * 1024);
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(daily_present.course = ''',
course,
''', daily_present.p, NULL)) AS ',
course
)
) INTO @sql
FROM daily_present;
SET @sql = CONCAT('SELECT daily_present.date
, ', @sql, '
FROM daily_present
group by daily_present.date
order by daily_present.date desc');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
我搜索并在下面写了一段代码
<?php
//connect to database
$connection = mysqli_connect("localhost", "root", "", "smartcard");
//run the store proc
$result = mysqli_query($connection,
"CALL daily") or die("Query fail: " . mysqli_error());
//loop the result set
while ($row = mysqli_fetch_array($result)){
echo $row[0] . " - " . + $row[1];
}
?>
这给了我这个输出但不是我想要的。
2014-06-28 - 522014-06-07 - 522014-06-06 - 502014-06-05 - 522014-06-04 - 492014-06-03 - 532014-06-02 - 47
请帮助我.......
表daily_present
date course p
28/06/2014 BBAII 52/2
28/06/2014 BCOM2nd_Year 109/4
07/06/2014 BBAII 52/2
06/06/2014 BBAII 50/4
05/06/2014 BBAII 52/2
05/06/2014 BCOM2nd_Year 104/9
04/06/2014 BBAII 49/5
04/06/2014 BCOM2nd_Year 104/9
03/06/2014 BBAII 53/1
03/06/2014 BCOM2nd_Year 106/7
02/06/2014 BBAII 47/7
02/06/2014 BCOM2nd_Year 109/4
我希望以html表格式
这样的结果date BBAII BCOM2nd_Year
28/06/2014 52/2 109/4
07/06/2014 52/2 NULL
06/06/2014 50/4 NULL
05/06/2014 52/2 104/9
04/06/2014 49/5 104/9
03/06/2014 53/1 106/7
02/06/2014 47/7 109/4
答案 0 :(得分:0)
看起来您唯一的问题是最后的echo语句。你不打印出存储在$ row中的所有值,只是前两个 - 我经常忘记用php echo添加换行符,不要忘记<br>
:)什么如果你使用
while($row = mysqli_fetch_array($result)){
echo $row[0] . " " . $row[1] . "/" . $row[2] . " " . $row[3] . "<br>"; }
您的数据库架构是什么?我想我猜对了,但你可能不得不调整它以使其有效。
~~ 我在这里提供了更多信息,因此我们不会发表评论: 如果您希望将数据放在表格中,可以使用:
echo "<table><tr><td>colname</td><td>col2</td><td>col3</td></tr>";
while (loops) { //aka for each row
echo "<tr><td>".$row[0]."</td><td>".$row[1]."/".$row[2]."</td><td>".$row[3]."</td></tr>";
}
echo "</table>"; //don't forget to close the tag
Echo将字符串发送到您的HTML文件。您使用php来决定输出的内容和时间,但只有回显的内容才会显示在浏览器上。
使用动态列数构建一个将更难,但是更多循环仍然是相同的想法。我没有看到任何数组你已经拥有数据库表的colNames - 你可以使用查询SHOW COLUMNS yourTableName