0

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

我有一个数值数组(“视图”),每个“视图”都特定于一个视频。我想将顶部的“视图”输出到表格(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>

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

4

3 回答 3

0

利用

var_dump($views);

在您的 list(...) 语句之前对其进行调试。可能 $views 没有像您想象的那样被填充。

于 2013-09-06T23:06:41.617 回答
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>

不要忘记你不应该编写重复的代码,循环是为你准备的。

于 2013-09-06T23:07:22.360 回答
0

那是因为mysql_fetch_array获取一行,所以即使以这种方式分配变量列表也只会设置与结果中的列一样多 - 在你的情况下是一个。改用类似的东西:

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


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

顺便说一句,不推荐使用 mysql 扩展,请改用 mysqli。

于 2013-09-06T23:08:21.150 回答