从同一个MySQL查询填充两个javascript数组
Populate two javascript arrays from the same MySQL Query
我试图从相同的查询($result
)填充这两个数组(time2
和text
),但只有第一个数组被填充,我不明白为什么…
注意,我是从相同的查询中调用的,因为实现了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 ",";
}?>]
mysql_fetch_array
是基于游标的函数。它将运行到结果集的末尾并停止。再次调用它仍然会返回'end of result set'。
. .它已经被弃用了。
你应该:
- 切换到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>
这允许您"同时"填充两个变量。好吧,实际上你让客户做这项工作,我个人不认为这有什么问题。
另一种可能更明智的方法(我不会向您展示)是让页面对数据执行AJAX请求,以简单的JSON结构返回所有数据,并在客户端对其进行排序…
相关文章:
- 组合两个javascript函数
- 比较包含多个值对的两个JavaScript数组
- 为什么这两个JavaScript函数调用具有相同的“;这个“;价值
- 无法延迟iPhone/iPad上的两个JavaScript操作
- 比较IF条件下的两个javascript数值
- 我可以在两个javascript文件之间传递一个字符串吗?
- 为标记调用href中的两个javascript函数
- 如何执行两个javascript函数
- 两个javascript网络工作者连续打印输出-为什么不同时打印呢
- 如何手动绑定两个javascript文件
- 两个javascript脚本的非独立性
- 合并两个Javascript数组,一次合并三个元素
- 为同一标记中的两个不同事件调用两个javascript方法
- 将两个Javascript函数组合到一个窗口中.nload不起作用
- 结合两个JavaScript函数
- IE可以同时执行两个JavaScript函数吗?
- 两个 JavaScript 文件,哪个方法首先调用
- 在 html 中的两个 JavaScript 之间传递值
- 两个 JavaScript 对象具有相同的属性实现方式,但原型不同
- 如何将两个Javascript函数合二为一