function outputscores($mysqlquery,$reverse=false)
{
while($row = mysql_fetch_array($mysqlquery))
{
echo '<img src="img/date.png" /> ' . date("j M Y",strtotime($row['timestamp'])) . '
<img src="img/time.png" /> ' . date("H:i:s",strtotime($row['timestamp'])) . '
<img src="img/star.png" /> '.$row['score'].$_GET["scoretype"].'<br />';
}
}
如果$ reverse设置为true,我需要反转数组,但PHP表示mysql_fetch_array
的输出不是有效数组。也不是$ mysqlquery本身。
有任何帮助吗?
哇今天我问了很多问题._。修改
$result = mysql_query("SELECT * FROM $gid LIMIT 25") or throwerror(mysql_error());
outputscores($result);
EDIT2 另一个可能的电话:
$result = mysql_query("SELECT * FROM ".$gid.",users WHERE users.lastcheck < ".$gid.".timestamp") or throwerror(mysql_error());
outputscores($result);
答案 0 :(得分:3)
你正在试图扭转整个结果集,尝试这样的事情:
function outputscores($mysqlres,$reverse=false)
{
$results = array();
while($row = mysql_fetch_array($mysqlres)){
print('I found a result: <pre>'.print_r($row, false).'</pre>'); //debugging purposes
$results[] = $row;
}
if($reverse) { $results = array_reverse($results); }
foreach($results as $row)
{
echo '<img src="img/date.png" /> ' . date("j M Y",strtotime($row['timestamp'])) . '
<img src="img/time.png" /> ' . date("H:i:s",strtotime($row['timestamp'])) . '
<img src="img/star.png" /> '.$row['score'].$_GET["scoretype"].'<br />';
}
}
哦确实正如soulmerge所说,你应该为函数提供一个mysql资源,而不是实际的查询。像这样:
$query = "SELECT field FROM table";
$res = mysql_query($query);
output_scores($res, true);
关于你的评论,请确保你的查询实际上是返回结果,在phpMyAdmin中测试它或者在while循环中添加一个简单的打印,如上所述。
答案 1 :(得分:3)
编辑:将您的SQL查询更改为:
$mysqlquery="SELECT * FROM $gid";
将您的功能更改为:
function outputscores($mysqlquery,$reverse=false)
{
if ($reverse==true)
$mysqlquery.=" ORDER BY id DESC LIMIT 25";
else
$mysqlQuery.=" LIMIT 25";
$result=mysql_query($mysqlquery);
while($row = mysql_fetch_array($result))
{
//Do output here
}
}
在这里,通过添加单词ORDER BY id DESC
,您将使记录按表中“id”列的降序排序。通过键入ASC
而不是DESC
,您可以按升序排序。此外,您可以将'id'替换为表格中的任何其他列,例如timestamp
,score
等。
编辑:或者,您也可以使用不同的函数将LIMIT
和ORDER BY
子句添加到查询中。然后你可以做这样的事情:
$reverse=false;//or true
$mysqlquery=addOrderBy("SELECT * FROM $gid",$reverse);
outputScores($mysqlquery);
答案 2 :(得分:1)
如果我说得对,$ mysqlquery应该是mysql查询结果,而不是数组。有两种情况mysql_fetch_array()
不返回数组:
var_dump($mysqlquery))
验证,或mysql_fetch_array()
返回FALSE
)。我希望您不会将查询本身传递给mysql_fetch_array()
,因为变量的名称意味着。您必须先致电mysql_query()
才能获取任何内容。
可以通过获取所有行并调用array_reverse()来完成反转。例如:
$rows = array();
while ($row = mysql_fetch_array($result)) {
$rows[] = $row;
}
array_reverse($rows);