【问题标题】:Mysql SELECT WHERE id = array()Mysql SELECT WHERE id = array()
【发布时间】:2023-03-20 07:40:02
【问题描述】:

我试图将一个数组插入到 SELECT WHERE id = array() 中,并试图在表格中显示结果,我可以得到一行数据,第一支球队的名字、胜利和失败,但剩下的没有出现 4 个团队。我试图显示所有 id 等于数组的团队。

$tournament = mysql_query("SELECT * FROM `tournaments` WHERE `id` = ".((int)$slug[1])." LIMIT 1");
    if (mysql_num_rows($tournament) > 0) {
        $tournament = mysql_fetch_assoc($tournament);
    }
    //array is equal to 273,287,234,423,124
    $teamx = array();
    $teamx[] = $tournament['teams'];

    $tteams = mysql_query("SELECT * FROM `teams` WHERE `id` IN (" . implode(',', array_map('intval', $teamx)) . ") LIMIT 128");
    if (mysql_num_rows($tteams) > 0) {
        $tteams = mysql_fetch_assoc($tteams);
        $template['TOURNAMENTTEAMS'] .= '<tr><td style="text-align: center;"><strong>' .$tteams['name']. '</td><td style="text-align: center;">' .$tteams['wins']. '</td><td style="text-align: center;">' .$tteams['losses']. '</td></tr>';
    }else{
        $template['TOURNAMENTTEAMS'] .= '<tr><td style="text-align: center;"><strong>No eligible teams.</td><td style="text-align: center;"></td><td></td></tr>';
    }`

【问题讨论】:

  • 如果$tournament['teams'] 已经用逗​​号分隔,则不需要将其放入另一个维度的数组中。

标签: php mysql arrays


【解决方案1】:

你需要遍历你的结果,现在如果你得到 1 或 10 个结果,你只打印第一个项目。

if (mysql_num_rows($tteams) > 0) {
    $results = mysql_fetch_assoc($tteams);
    foreach($results as $row) {
        $template['TROURNAMENTTEAMS'] .= ... ;
    }
} else {
    $template['TROURNAMENTTEAMS'] .= ... ;
}

【讨论】:

  • 感谢您的帮助,我用这个找到了它 if (mysql_num_rows($result) > 0) { while ($tteamsfetch = mysql_fetch_assoc($result)){ $template['TOURNAMENTTEAMS'] .= ' ' .$tteamsfetch['name']。 ' ' .$tteamsfetch['wins']。 ' ' .$tteamsfetch['losses']。 ' '; } }
【解决方案2】:

让我们考虑一下您的 $teamx 数组的值如下:

$teamx = array(273,287,234,423,124);

那么你的查询应该如下:

    $tteams = mysql_query("SELECT * FROM `teams` WHERE `id` IN (" . implode(',', $teamx)) . ") LIMIT 128");

不需要array_map 函数。

错误可能在您的$tournament['teams']; 中。检查其中的值,如果这些值像我上面的$teamx 数组,那么你必须循环通过你的$tournament['teams']; 来生成一个数组。

【讨论】:

    【解决方案3】:
    if (mysql_num_rows($result) > 0) {
            while ($tteamsfetch = mysql_fetch_assoc($result)){
                $template['TOURNAMENTTEAMS'] .= '<tr><td style="text-align: center;"><strong>' .$tteamsfetch['name']. '</td><td style="text-align: center;">' .$tteamsfetch['wins']. '</td><td style="text-align: center;">' .$tteamsfetch['losses']. '</td></tr>';
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      • 2011-02-07
      • 2012-03-17
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      相关资源
      最近更新 更多