2

マイページには、ドロップダウンメニューを使用して、特定のスポーツチームの選手の名前が表示されます. コーチはログインして自分のチームを選び、自分のチームが対戦する対戦相手を選択できます。ユーザーがチームと対戦相手を選択したら、[送信] をクリックすると isset 関数がトリガーされます。

ここで、ドロップダウン メニューから値を取得し、DB の正しいテーブルにアップロードします。すべてが非常に簡単ですが、送信をクリックするとタイトルにエラーが表示されます。どんな助けでもいただければ幸いです

if ( isset($_POST['submit']) ) {
    $player_ids = array_map('intval', $_REQUEST['players']);
    $opponents_id = $_REQUEST['players'];

    var_dump($player_ids);
    var_dump($opponents_id);

    $query = 'SELECT `name`, `position` 
        FROM `player_info` 
        WHERE `player_id` IN (' . implode(',', $player_ids) . ')';

    $return_names = mysql_query($query) or die(mysql_error());

         while ( $row = mysql_fetch_assoc($return_names) ) 
        {
            $selected[] = $row['name'];
            $position[] = $row['position'];
        }

    $query = ("SELECT `fixture_id` 
                FROM `fixtures`     
                WHERE `fixture_id` = $opponents_id") 
                or die (mysql_error()); 

    $result = mysql_query($query) or die(mysql_error());

                while ($row = mysql_fetch_array($query))
                {
                    $fixture_id[] = $row['fixture_id']; 

                }
                        for ($i=0; sizeof($selected) > $i; $i++){
                             $sql = mysql_query("INSERT INTO `team` (`selection_id`, `fixture_id`, `player_position`,`player_name`) 
                                                VALUES ('$fixture_id[$i]','$position[$i]','$selected[$i]')") 
                                                or die(mysql_error());
                                echo $selected[$i]; 
                                echo $position[$i];
                                echo $fixture_id[$i];
                                echo'<br>';


}       

ここに画像の説明を入力

ここに画像の説明を入力

4

4 に答える 4

3

'where 句'のUnknown column 'Array'エラーは、文字どおり、配列値を where 句に入れようとしたことを意味します。

この行で:

$query = ("SELECT `fixture_id` 
            FROM `fixtures`     
            WHERE `fixture_id` = $opponents_id") 
            or die (mysql_error());

あなたのショーが5つの値を含む配列である$opponents_id変数を使用しています。var_dumpしたがって、 IN 句を使用してそれらをリストする必要があります ( の場合と同様$player_ids):

$query = ("SELECT `fixture_id` 
            FROM `fixtures`     
            WHERE `fixture_id` IN (" . implode(",", $opponents_id) . ");") 
            or die (mysql_error());

mysql_*注: うまくいけば、関数のファミリの面倒な主題に気付いていることを願っています。これらは推奨されておらず、安全ではありません。私はそれについてしばらく前に書きました: http://www.jorble.com/2012/06/you-are-vulnerable-for-sql-injection/

于 2013-10-10T12:01:39.790 に答える
1

bodi0 は正しいです。あなたの$opponents_idは配列です。配列でなければならない場合は、そのようなことを行います

$opponents_id_text=implode(',',$opponents_id);
$query = ("SELECT `fixture_id` 
                FROM `fixtures`     
                WHERE `fixture_id` in ($opponents_id_text)") 
                or die (mysql_error()); 
于 2013-10-10T12:29:42.917 に答える
0

問題は、2 番目の SQL クエリにあります。

WHERE `fixture_id` = $opponents_id" - 

ここで、は配列です ( HTML コンポーネントがオプションを配列として送信するため、$opponents_idから値を割り当てると、自動的に配列に変換されます)。あなたがやったのと同じように、それもまた。$_REQUESTselectimplode()$player_ids

于 2013-10-10T12:01:20.147 に答える