小编典典

SQL查询返回错误结果

sql

在我的网站上,用户可以从32名球员中选择球员。首发阵容中有15个位置,因此需要从32个球员阵容中选择15个球员。

如果您看图1,您会发现Badden Kerr可以同时打蝇头和后卫。

问题

在选择列表中,没有显示玩家的次要位置。作为示例,如果再次查看图像1,您会看到Badden
Kerr可以同时发挥蝇头和后卫。但在第二张图片中,后卫位置为空,Baden Kerrs的名字未出现在其次要位置(后卫)


当我在Phpmyadmin中运行以下sql语句时:

SELECT *
FROM `allsquads`
WHERE `Team` = 'Blues'
AND `Position` = 'flyhalf'
AND `Secondary` = 'fullback'

您可以在下图中看到返回的正确结果: 在此处输入图片说明

但是,当我尝试在我的PHP代码中运行相同的SQL语句时,会给我错误/不想要的结果(如您在image2中所看到的)

我的PHP代码如下:

// assign each position to array variable position
        $position = array(
            "prop",
            "hooker",
            "prop",
            "lock",
            "lock",
            "flank",
            "flank",
            "no8",
            "scrumhalf",
            "flyhalf",
            "center",
            "center",
            "wing",
            "wing",
            "fullback"
        );
        // for loop to loop through the number of positions in the team, which will be used to query DB
        $size     = sizeof($position);
        for ($i = 0; $i < $size; $i++) {
            // Query For positions
            $sqlprops = mysql_query("SELECT * FROM `allsquads` 
                                     WHERE `Team` = '$t1select'  
                                     AND `Position` = '$position[$i]' 
                                     OR `Secondary` = '$position[$i]'") or die(mysql_error());

新问题 当我执行以下查询时

SELECT * FROM `allsquads` 
                               WHERE `Team` = '$t1select'  
                                AND `Position` = '$position[$i]' 
                                OR `Secondary` = '$position[$i]'") or die(mysql_error());

查询现在显示两个位置的球员,但显示不在选择团队中的其他球员?

任何帮助或建议,将不胜感激

先感谢您


阅读 156

收藏
2021-05-30

共1个答案

小编典典

因为你有它设置你的PHP代码查询不会产生期望的结果Position,并Secondary以相同的值。根据您提供的示例数据,该数据将不会返回任何内容。

如果您正在寻找一个查询来选择合格的玩家来参加比赛,那么您可以将查询更改为以下形式:

SELECT * FROM `allsquads` 
WHERE `Team` = '$t1select'  
AND (`Position` = '$position[$i]' OR `Secondary` = '$position[$i]')
2021-05-30