0

以下のコードの問題は何ですか。エラー警告: foreach() に無効な引数が指定されました

    if(isset($_POST['submit']))
        {
        foreach($_POST['team[]'] as $value)
        {
        $insert=mysql_query("INSERT INTO team('team') VALUES ('$value')");
        }
        if($insert)
        {
        echo "dONE";
        }
        }
<form method="post" action="check.php">
<input type="checkbox" name="team[]" value="AG"> Argentina
<input type="checkbox" name="team[]" value="GE"> Germany
<input type="checkbox" name="team[]" value="BR"> Brazil
<input type="submit" name="submit" value="submit">
</form>
4

5 に答える 5

2

試してみてください:

foreach($_POST['team'] as $value)
于 2012-07-31T15:28:07.133 に答える
1

参照しないでくださいteam[]。代わりに使用

if (isset($_POST['team'])) {
    foreach($_POST['team'] as $value) { ... }
}
于 2012-07-31T15:28:28.643 に答える
1

$_POST から変数 team を受け取ると、すべてのチェックボックスの配列になります。

したがって、使用する代わりに使用team[]する必要があります

foreach($_POST['team'] as $value)

また、チェックボックスがチェックされていない場合、主要なチームが存在しないことに注意する必要があります。if (isset($_POST['team']))

また、ループするたびに挿入を上書きしています。

あなたはこのようなことをしたいかもしれません:

if(isset($_POST['submit']))
{
    if (isset($_POST['team']))
    {
        $insert = true;

        foreach($_POST['team'] as $value)
        {
            // we add security with mysql_real_escape_string
            $value = mysql_real_escape_string($value);
            $result = mysql_query("INSERT INTO team('team') VALUES ('$value')");

            if (!$result)
            {
                $insert = false;
                break;
            }
        }

        if($insert)
        {
            echo "dONE";
        }
    }
}

mysql_real_escape_stringをチェックして、コードにセキュリティを追加することをお勧めします

于 2012-07-31T15:30:59.590 に答える
0

次のことを試してください。

$teams = $_POST['team'];
$submitted = $_POST['submit'];

if(isset($submitted) && is_array($teams)) {

     foreach($teams as $team) {
          /* Escapes special characters in a string for use in an SQL statement */ 
          $team = mysql_real_escape_string($team)
          $insert = mysql_query("INSERT INTO team('team') VALUES ('$team')");
     }

     if($insert) {
          echo "dONE";
    }
} else {
    echo "Either Form Not Submitted or Teams is Not Array";
}
于 2012-07-31T15:30:14.350 に答える
0

入力を行うname=something[]と、phpが配列を作成するので、行う必要があります

foreach($_POST['team'] as $value)

またname=team[member][]、phpで次のように繰り返すこともできます

foreach($_POST['team']['member'] as $value)

したがって、入力のグループ化と複数の動的入力の処理が非常に簡単になります

于 2012-07-31T15:28:44.933 に答える