为什么我的列表函数只输出我的数组的第一个值?

时间:2013-09-06 23:01:02

标签: php sql arrays list

我仍然是一个php新手...如果这是一个愚蠢的问题,我道歉。

我有一个数值数组('views'),每个'视图'特定于一个视频。我想将顶级'views'输出到表格(html)的单元格中。无论我的列表是升序还是降序,我仍然只能看到列表的第一个数字(但是正确的数字)(第一行中的$ views1)。这是我的代码:

<? php //lots of code, followed by

include 'connect.php';
$views=mysql_fetch_array(mysql_query("SELECT video.views FROM video ORDER by  
video.views DESC LIMIT 10"));   
list($views1,$views2,$views3,$views4,$views5,$views6,$views7,$views8,$views9,$views10)  
= $views;
?>

<html>
<body>
<table>
<tr><td><?php echo $views1 ?></td></tr>
<tr><td><?php echo $views2 ?></td></tr>
. //My actual code has 10 rows going from $views1 to $views10 
.
. 
<tr><td><?php echo $views10 ?></td></tr>

</body>
</html>

我只是看不出有什么问题...感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

使用

var_dump($views);

在list(...)语句之前调试它。可能是$ views没有像你想象的那样填充。

答案 1 :(得分:0)

此代码应该有效:

<?php //lots of code, followed by

include 'connect.php';
$q=mysql_query("SELECT video.views FROM video ORDER by video.views DESC LIMIT 10");
$views=array();
while ($views[]=mysql_fetch_array($q));
?>

<html>
  <body>
    <table>
        <?php
        foreach ($views as $view)
            echo '<tr><td>'.$view['views'].'</td></tr>';
        ?>
    </table>
  </body>
</html>

不要忘记你不应该写重复的代码,循环就在那里。

答案 2 :(得分:0)

这是因为mysql_fetch_array提取一行,所以即使以这种方式分配变量列表,也只会设置结果中的colunms - 在您的情况下为1。使用类似的东西:

$res = mysql_query(...);
while ($arr = mysql_fetch_array($res)) $views[] = $arr[0];


<tr><td><?=$views[0]?></td></tr>
...

顺便说一下,不推荐使用mysql扩展,而是使用mysqli。