为了账号安全,请及时绑定邮箱和手机立即绑定

MYSQL 复制数组值

MYSQL 复制数组值

PHP
泛舟湖上清波郎朗 2022-07-09 16:27:36
    error_reporting(E_ALL);echo "<pre>";// DISTRIBUTE TEAMS INTO CONTESTS$fixtures = mysqli_query($link, "SELECT teamname FROM tourn_teams WHERE groupname='Group 1'");$teams = array();// THE TEAMSwhile($row = mysqli_fetch_assoc($fixtures)){   $teams[] = $row['teamname'];}// HOW MANY WEEKS$weeks = 3;// MAKE ENOUGH ARRAY ELEMENTS FOR THE DISTRIBUTION$array = array_merge($teams, $teams);// POPULATE THE MATCHES ARRAY$matches = array();while ($weeks){    foreach ($teams as $ptr => $team)    {        // FIND THE INDEX INTO THE DISTRIBUTION ARRAY        $linkt = $ptr + $weeks;        // SELECT THE HOME AND AWAY TEAMS        $home = $team;        $away = $array[$linkt];        $matches[$team][$weeks] = array('home' => $home, 'away' => $away);    }    // NEXT WEEK    $weeks--;}// SORT THE MATCHES SENSIBLY SO WEEK ONE COMES FIRSTforeach ($matches as $team => $contests){    ksort($contests);    $matches[$team] = $contests;}// ACTIVATE THIS TO SEE WHAT THE $matches ARRAY LOOKS LIKE// print_r($matches);// CREATE THE TABLE OF MATCHUPS$out = NULL;$out .= "<table>";$out .= PHP_EOL;// CREATE THE HEADERS FOR EACH WEEK$weeknums = end($matches);$out .= "<tr>";$out .= '<th> Team </th>';$out .= '<th> v </th>';$out .= "<th> Team </th>";$out .= '</tr>';$out .= PHP_EOL;// CREATE THE MATRIX OF MATCHUPSforeach ($matches as $team => $contests){    $out .= "<form class='form-horizontal' action='".$_SERVER['PHP_SELF']."'d method='post'><tr><td><input type='text' name='teamone' value='$team' readonly></td>";    $out .= "<td> <b>v</b></td>";    foreach ($contests as $week => $matchup)    {print_r($matchup);        $out .= "<td> <input type='text' name='teamtwo' value='{$matchup["away"]}' readonly> </td>";    }    $out .= "</tr>";    $out .= PHP_EOL;}所以这是我的代码。当我尝试在 // CREATE THE MATRIX OF MATCHUPS 之后运行 sql 查询时,它可以工作并执行我想要的操作,但它将 2 行相同的行插入数据库。数据库我一直在玩,无法找出重复它的内容。我只想要一排而不是两排相同的行。另外我刚刚注意到,它稍后会生成两个相同的固定装置......
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

你的问题是你的最后一个foreach. $matchup是一个类似的数组


Array

(

    [home] => All-Stars

    [away] => Vets

)

并且您正在迭代其值,因此您为每个匹配项进行两次插入。你实际上并不需要foreach那里,只需使用


foreach ($contests as $week => $matchup) {

    $home = $matchup['home'];

    $away = $matchup['away'];

    $sql = mysqli_query($link, "INSERT INTO tourn_fixtures(teamone, teamtwo) values ('$home', '$away')");

}

请注意,您还需要引号away作为$matchup.


这是您的代码演示,显示为每个查询生成两个INSERT查询$matchup:Demo on 3v4l.org


查看完整回答
反对 回复 2022-07-09
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号