Php 从同一个MySQL查询填充两个javascript数组

Php 从同一个MySQL查询填充两个javascript数组,php,javascript,mysql,Php,Javascript,Mysql,我试图从同一个查询($result)中填充这两个数组(time2和text),但是只填充了第一个数组,我不明白为什么… 注意,我是从同一个查询调用的,因为实现了orderbyrand()功能,当我需要获取一些数组位置的值时,应该显示正确的值。这就是为什么我不能创建另一个相同的查询。 这可能吗 //Array Time var time2 = [<?php $title=$_GET["title"]; $result = mysql_query("SELECT ta

我试图从同一个查询(
$result
)中填充这两个数组(
time2
text
),但是只填充了第一个数组,我不明白为什么…
注意,我是从同一个查询调用的,因为实现了
orderbyrand()
功能,当我需要获取一些数组位置的值时,应该显示正确的值。这就是为什么我不能创建另一个相同的查询。
这可能吗

    //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 ",";
        }?>]
//数组时间

var time2=[
mysql\u fetch\u array
是一个基于光标的函数。它将运行到结果集的末尾并停止。再次调用它仍将返回“结果集的结尾”

…这是不推荐的

你应该:

  • 切换到PDO或mysqli
  • 将整个结果集读取到一个局部变量,然后循环该变量来创建javascript

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

    …这是不推荐的

    你应该:

  • 切换到PDO或mysqli
  • 将整个结果集读取到一个局部变量,然后循环该变量来创建javascript

  • 首先,您应该明确地改变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>
    
    
    var time2=[];
    var text=[];
    
    首先,您应该明确地改变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>
    
    
    var time2=[];
    var text=[];
    

    你是说我应该创建一个数组来存储所有的数据,使用
    timecode
    group\u id
    标记
    ,然后将它们分开,并为每一个创建新闻数组,对吗?是的。你将读取所有数据一次,然后重用生成的数组来填充javascript数组。我不会这样做在。如果有大量数据,你可能会冒着填满服务器内存的风险……因此它不能很好地扩展。@fredrik So,你建议我怎么做?@zppin使用数组。fredrik假设你的查询将检索大量数据。如果你要向客户端发送那么多数据,你需要重新思考整个事情的工作原理。你是说我应该这样做吗例如,创建一个数组来存储所有数据,使用
    timecode
    group\u id
    tag
    ,然后将它们分开,并为每一个创建新闻数组,对吗?是的。您将读取所有数据一次,然后重用生成的数组来填充javascript数组。我不会这样做。有很多数据,您将d冒着填满服务器内存的风险…所以它不能很好地扩展。@fredrik So,你建议我怎么做?@Zppin使用数组。fredrik假设你的查询将检索到大量的数据。如果你向客户端发送那么多数据,你需要重新考虑整个过程的工作方式。你的代码应该填充数组
    time2
    text
    ,对吗?因为这不会发生。代码是打印出来的,但它不会填充数组……那么您没有在脚本标记中对其进行编码吗?我已经用它进行了更新。是的,它是封闭的!这是打印出来的代码:
    time2.push('82');text.push('tag1');time2.push('26');text.push('tag2'));
    etcIf它被清晰地打印在页面上,而不是作为javascript执行。我发现很难相信它被正确地封装在脚本标记中。你能提供更多的代码吗?(比如在粘贴箱中)嗯,看起来是正确的。试着切换到打印而不是echo-除此之外,我无法解释为什么它不起作用。你的代码应该填充数组
    time2
    text
    ,对吗?因为这不会发生。代码是打印的,但不会填充数组…那么你没有在脚本标记中全部编码吗?我已经更新了这是打印出来的代码:
    time2.push('82');text.push('tag1');time2.push('26');text.push('tag2');
    etcIf它被清晰地打印在页面上,而不是作为javascript执行。我发现很难相信它被正确地封装在脚本标记中。你能提供更多的代码吗?(比如在一个容器中)嗯,看起来是对的。试着换成打印而不是回声-除此之外,我无法解释为什么它不起作用。