0

我试图从同一个查询 ( ) 中填充这两个数组 ( 和 ) ,time2但是只填充了第一个数组, 我不明白为什么......实现了,当我需要获取一些数组位置的值时,应该会出现正确的值。这就是为什么我不能创建另一个相同的查询。 这可能吗?text$result
ORDER BY RAND ()

    //Array Time
    var time2 = [<?php $title=$_GET["title"];

    $result = mysql_query("SELECT tag, round(avg(timecode)) as timecode, group_id
    FROM tags
    WHERE tags.filename = '".$title."'
    GROUP BY group_id, tag
    ORDER BY RAND()");

    while($row = mysql_fetch_array($result))
        {
        $timecode = $row['timecode'];
        print $timecode;
        print ",";
        }?>]

    //Array Text

    var text = [<?php

    while($row = mysql_fetch_array($result))
        {
        $tag = $row['tag'];
        print "'";
        print $tag;
        print "'";
        print ",";
        }?>]
4

2 回答 2

2

首先,您应该明确地改变 mysql_* 系列函数,因为它们显然已被弃用。不这样做的唯一正当理由是您的 php 安装已过时并且您无法控制服务器(因为它是托管的),即使这样也是勉强可以接受的。

我会通过这样做来解决你的问题:

<script>
var time2 = [];
var text = [];
<?php
  $title=$_GET["title"];

  $result = mysql_query("SELECT tag, round(avg(timecode)) as timecode, group_id FROM tags WHERE tags.filename = '".$title."' GROUP BY group_id, tag ORDER BY RAND()");

  while($row = mysql_fetch_array($result))
  {
    echo "time2.push('".$row['timecode']."');";
    echo "text.push('".$row['tag']."');";
  }
?>
</script>

这允许您“同时”填充两个变量。好吧,实际上您让客户完成工作,我个人认为这没有问题。

另一种可能更明智的做法(我不会向您展示)是让页面对数据执行 AJAX 请求,以简单的 JSON 结构返回所有数据并在客户端上对其进行排序。 .

于 2013-03-25T16:48:46.190 回答
2

mysql_fetch_array是一个基于光标的函数。它将运行到结果集的末尾并停止。再次调用它仍将返回“结果集结束”。

..它已被弃用。

你应该:

  1. 切换到 PDO 或 mysqli
  2. 将整个结果集读出到本地变量,然后循环创建您的 javascript
于 2013-03-25T16:08:26.130 回答