MYSQL 复制数组值

    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 TEAMS

while($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 FIRST

foreach ($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 MATCHUPS

foreach ($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 行相同的行插入数据库。


数据库


我一直在玩,无法找出重复它的内容。我只想要一排而不是两排相同的行。


另外我刚刚注意到,它稍后会生成两个相同的固定装置......



泛舟湖上清波郎朗
浏览 122回答 1
1回答

白猪掌柜的

你的问题是你的最后一个foreach. $matchup是一个类似的数组Array(&nbsp; &nbsp; [home] => All-Stars&nbsp; &nbsp; [away] => Vets)并且您正在迭代其值,因此您为每个匹配项进行两次插入。你实际上并不需要foreach那里,只需使用foreach ($contests as $week => $matchup) {&nbsp; &nbsp; $home = $matchup['home'];&nbsp; &nbsp; $away = $matchup['away'];&nbsp; &nbsp; $sql = mysqli_query($link, "INSERT INTO tourn_fixtures(teamone, teamtwo) values ('$home', '$away')");}请注意,您还需要引号away作为$matchup.这是您的代码演示,显示为每个查询生成两个INSERT查询$matchup:Demo on 3v4l.org
打开App,查看更多内容
随时随地看视频慕课网APP