Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何解决这个mysql查询_Php_Mysql_Pdo - Fatal编程技术网

Php 如何解决这个mysql查询

Php 如何解决这个mysql查询,php,mysql,pdo,Php,Mysql,Pdo,我有3张mysql表 用户(身份证(p)、姓名) 团队(团队id(p)、团队id(f)、团队名称、团队资金、团队资金天数)和 历史记录(t\u id(f)、日期、d\u money) 现在我必须使用php显示排行榜 我试过这个 SELECT t_id FROM team; 得到了结果 那么, 内循环 foreach($tid_all as $tid) { $que = $db_con->prepare("SELECT d_money, t_name FROM team, h

我有3张mysql表

  • 用户(身份证(p)、姓名)
  • 团队(团队id(p)、团队id(f)、团队名称、团队资金、团队资金天数)
  • 历史记录(t\u id(f)、日期、d\u money)
现在我必须使用php显示排行榜

我试过这个

SELECT t_id FROM team;
得到了结果

那么, 内循环

foreach($tid_all as $tid)
{
     $que = $db_con->prepare("SELECT d_money, t_name FROM team, history WHERE t_id= '".$tid['t_id']."' && day='1'");

     $que->execute();

        while($info = $que->fetch(PDO::FETCH_NUM))
        {

                  echo "<tr>";
                  echo  "<td>".$info[0]."</td>";
                  echo  "<td>".$info[1]."</td>";
                  echo "</tr>";
         }
}
这条路对不对

谢谢大家的帮助


问题:是否可以按d_money订购结果表?我希望它按降序排列。

MySQL查询中没有
&&
。在查询中用
运算符替换该值。

由于您希望从两个表中获取数据,因此请使用两个表,而不是使用循环:

SELECT
  h.d_money,
  t.t_name
FROM team AS t
INNER JOIN history AS h ON t.t_id = h.t_id;
运行这个查询一次,您将得到您想要的。您还可以像在查询中那样,在其末尾添加一个
WHERE
子句。

试试这个

SELECT d_money, t_name FROM team, history WHERE team.t_id= '".$tid['t_id']."' AND history.t_id= '".$tid['t_id']."' && day='1'

和&
替换为
。尝试如下操作:

"SELECT d_money, t_name FROM team, history WHERE t_id= '".$tid['t_id']."' AND day='1' order by d_money DESC "
你能替换吗

 WHERE t_id= '".$tid."' AND day='1'
而不是

 WHERE t_id= '".$tid['t_id']."' && day='1'

请定义“不起作用”。你预期会发生什么,真正发生了什么?我尝试了这个,它起了作用。选择d_money,t_name FROM team,history WHERE history.t_id=$tid['t_id']&&team.t_id=$tid['t_id']..是否正确?现在您的代码正常了。当您从多个表加载数据时,请尝试使用join。通过编辑检查我的答案。您只需将
按货币顺序描述
添加到查询中。它不起作用。我想当我使用foreach循环时,它会在表中显示一行。还有其他方法吗?首先加载数组中的所有ID。然后在查询时使用
where in
条件。
 WHERE t_id= '".$tid['t_id']."' && day='1'