谁能告诉我如何从多个MySQL表中选择和排序的游戏限制15使用php?
<?php
//$query = "SELECT id, gamename, gameplayed FROM action, adventure, augur, beauty, chess, joke, mmorpg, multiplayer, platform, puzzle, racing, shooting, sport, stratergy WHERE id = :id";
$query = '
SELECT id, gamename, gameplayed FROM((
SELECT id, gamename, gameplayed
FROM action
ORDER BY gameplayed
DESC LIMIT 15
) UNION (
SELECT id, gamename, gameplayed
FROM adventure
ORDER BY gameplayed
DESC LIMIT 15
))as t ORDER BY gameplayed';
$query_params = array(':id' => '1');
//$query = "SELECT id, gamename FROM action, adventure, augur, beauty, chess, joke, mmorpg, multiplayer, platform, puzzle, racing, shooting, sport, stratergy ORDER BY gameplayed DESC LIMIT 15";
try
{
// These two statements run the query against your database table.
$stmt = $db->prepare($query);
$stmt->execute($query_params);
}
catch(PDOException $ex)
{
// Note: On a production website, you should not output $ex->getMessage().
// It may provide an attacker with helpful information about your code.
die("Failed to run query: " . $ex->getMessage());
}
$rows = $stmt->fetchAll();
foreach($rows as $row):
echo $rows['t'];
endforeach;
unset($row);
?>我在谷歌上搜索,发现解决方案是使用联合,但我一直得到错误“未定义索引t”
发布于 2013-04-22 00:35:50
尝试将您的SQL查询更改为
SELECT id, gamename, gameplayed
FROM action
LIMIT 15
UNION
SELECT id, gamename, gameplayed
FROM adventure
ORDER BY gameplayed DESC
LIMIT 15
ORDER BY gameplayed发布于 2013-04-22 00:36:02
它在select查询中看不到名为"t“的字段?尝试var_dump() $rows,然后您可能会看到哪里出了问题。
您要做的是尝试选择一个表别名。您不能选择它们,只能选择字段。
现在,按照gameplayed列中的顺序,结果应该是数组$rows的子数组的开头,就像第一个表和第二个混合表的元素一样。
发布于 2013-04-22 00:38:26
您是否已尝试将UNION的所有结果都选择为别名't'?它不会起作用,你必须逐个使用它们,即:
...UNION (
SELECT t.id as 'tid', t.gamename as 'tgamename', t.gameplayed as 'tgameplayed'
FROM adventure AS t
...
$row['tid']; $row['tgamename']; $row['tgameplayed']https://stackoverflow.com/questions/16133422
复制相似问题