我正在尝试从同一个查询(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 ",";
}?>]
答案 0 :(得分:2)
mysql_fetch_array
是基于游标的函数。它将运行到结果集的末尾并停止。再次调用它仍将返回“结果集结束”。
..并且已被弃用。
你应该:
答案 1 :(得分: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结构返回所有数据并通过它进行排序客户...