首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用php联合从多个表中选择数据

使用php联合从多个表中选择数据
EN

Stack Overflow用户
提问于 2013-04-22 00:28:06
回答 3查看 1.4K关注 0票数 0

谁能告诉我如何从多个MySQL表中选择和排序的游戏限制15使用php?

代码语言:javascript
运行
复制
   <?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”

EN

回答 3

Stack Overflow用户

发布于 2013-04-22 00:35:50

尝试将您的SQL查询更改为

代码语言:javascript
运行
复制
SELECT id, gamename, gameplayed 
FROM action 
LIMIT 15 
UNION
SELECT id, gamename, gameplayed
FROM adventure
ORDER BY gameplayed DESC 
LIMIT 15
ORDER BY gameplayed
票数 0
EN

Stack Overflow用户

发布于 2013-04-22 00:36:02

它在select查询中看不到名为"t“的字段?尝试var_dump() $rows,然后您可能会看到哪里出了问题。

您要做的是尝试选择一个表别名。您不能选择它们,只能选择字段。

现在,按照gameplayed列中的顺序,结果应该是数组$rows的子数组的开头,就像第一个表和第二个混合表的元素一样。

票数 0
EN

Stack Overflow用户

发布于 2013-04-22 00:38:26

您是否已尝试将UNION的所有结果都选择为别名't'?它不会起作用,你必须逐个使用它们,即:

代码语言:javascript
运行
复制
...UNION (
 SELECT t.id as 'tid', t.gamename as 'tgamename', t.gameplayed as 'tgameplayed'
 FROM adventure AS t
 ...


$row['tid']; $row['tgamename']; $row['tgameplayed']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16133422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档