2

我的页面使用下拉菜单显示某个运动队的球员姓名。教练可以登录以选择他的球队并选择他的球队将对阵的对手。当用户选择了团队和反对者后,他点击提交并触发 isset 功能。

现在我从下拉菜单中捕获值并将其上传到数据库中的正确表中。一切都很简单,但是当我单击提交时,我得到标题中的错误。任何帮助,将不胜感激

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());

您正在使用的$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

问题出在您的第二个 SQL 查询中:

WHERE `fixture_id` = $opponents_id" - 

这里$opponents_id是数组(当您从 为它分配值时,它会自动转换为数组$_REQUEST,因为 HTML 组件select将选项作为数组发送)。也只是implode()它,就像你为$player_ids.

于 2013-10-10T12:01:20.147 回答
-1

您没有在 sql 查询中正确指定 Array。

当我们使用数组时,我们必须在查询中指定数组编号

于 2013-10-10T12:02:21.557 回答