Php 如何使用select查询一次获取所有两个数组值
我想在最近的时间得到名字和相应的分数。所以我试着:Php 如何使用select查询一次获取所有两个数组值,php,mysql,select,Php,Mysql,Select,我想在最近的时间得到名字和相应的分数。所以我试着: $queryObj = mysql_query("SELECT `Name`,`Score` from `Table`.`Score` where `Date` = ( SELECT max(`Date`) from `Table`.`Score`) and `Name`<>'' "); 但当我打印时: print_r(array_values($searches)); 数组中缺少第一个值,因此这不
$queryObj = mysql_query("SELECT `Name`,`Score` from `Table`.`Score` where `Date` = ( SELECT max(`Date`) from `Table`.`Score`) and `Name`<>'' ");
但当我打印时:
print_r(array_values($searches));
数组中缺少第一个值,因此这不是正确的方法。
我还尝试:
$row = mysql_fetch_assoc($queryObj);
for ($i = 0; $i <3; $i++)
print( $row['Name'][$i]." Score: ".$row['Score'][$i]."<br />\n");
注意:是的,有一些空白值
我的预期结果是:
abc score 3
jane score 1
tarzan score 1
好的,在您更新了您的问题并提供了您期望的内容之后,您的查询应该如下所示:
SELECT t1.Name, t1.Score
FROM Table.Score t1
INNER JOIN
(
SELECT max(Date) MaxDate, Name, Score
FROM Table.Score
WHERE Name <> ''
GROUP BY Name
) t2
ON t1.Name = t2.Name AND t1.Date = t2.MaxDate
然后:
您可以按照您在上一次评论中希望的方式很好地foreach
foreach($rows as $name => $score) {
echo $name . ' - ' . $score . "\n";
}
你说的第一个值是什么意思?您确定查询返回了有效的结果吗?您是否使用PHPMyAdmin进行了测试?您确定这不是查询结果的问题吗?(您是否尝试在mysql中执行它?)。另外,不要使用
mysql.*
函数-它们是不推荐的,我非常确定这是正确的查询。我在phpmyadmin中测试了sql,它返回两列、三行结果。请显示表中的示例数据。现在很难说,为什么它丢失了。你需要在提问之前阅读mysql文档。不,对不起,这不是我的愿望。我想得到所有的行,并能够打印它的值。就像在编辑后的文章中一样。是的,现在当你编辑问题并显示预期结果时,我可以看到你在追求什么,我将很快提供解决方案,将编辑我的答案。我如何将它们放入php中的变量中,然后打印出来?只需将你的查询选择名称…
替换为我在编辑中提供的查询,do$row=mysql\u fetch\u assoc($queryObj);代码>然后var\u dump($row)代码>它是一个数组。我仍然不知道我可以用php打印它吗?实际上,我的查询没有问题,但我有问题,如何将查询结果输入php变量并打印出来。使用您在phpmyadmin中的查询,我得到了一个额外的行,我认为这不是很精确。
SELECT t1.Name, t1.Score
FROM Table.Score t1
INNER JOIN
(
SELECT max(Date) MaxDate, Name, Score
FROM Table.Score
WHERE Name <> ''
GROUP BY Name
) t2
ON t1.Name = t2.Name AND t1.Date = t2.MaxDate
$queryObj = mysql_query(" ... ");
$rows = array();
while($row = mysql_fetch_assoc($queryObj)) {
$rows[$row['Name']] = $row['Score'];
}
foreach($rows as $name => $score) {
echo $name . ' - ' . $score . "\n";
}