【问题标题】:PHP SQL - Search for match with same playersPHP SQL - 搜索与相同球员的比赛
【发布时间】:2018-04-29 01:47:49
【问题描述】:

早上好。 我一直在尝试制作可以比较匹配率的“东西”,但我一直在寻找与 2 名相同球员的比赛。

我发现了一些关于 AND OR 括号的东西,所以这是我的 sql 查询

        $ccc = "SELECT * FROM zapasy WHERE (playerName01 = '".$player1."' OR playerName01 ='".$player2."') AND (playerName02 = '".$player2."' OR playerName02='".$player1."')";
        $result3 = $db->query($ccc);
        $ids = array();

        while ($row55 = $result3->fetch_assoc())
        {

$ids[] = $row55['winner'];


        }

但是,问题是每当我尝试获取数据时,它给我的索引比实际预期的要多。 这是获取后打印数组值的结果。

Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 6 ) 

正如您在此处的数据库示例中看到的那样,正如预期的那样,只有 2 3 4。 db sample

有人建议我做错了什么吗?

【问题讨论】:

    标签: php sql arrays mysqli


    【解决方案1】:

    在 MySQL 中编写此代码的一种简单方法是使用元组:

    where (?, ?) in ( (playername01, playername02), (playername02, playername01) )
    

    ? 用于参数。这应该是您将值传递给查询的方式。

    【讨论】:

    • 感谢您的建议,但 Mahesh 的修复确实有效。
    • 您应该考虑接受一个答案,无论您喜欢哪个。我觉得这个比较简单,但你是OP,你可以接受任何你喜欢的。
    • @GordonLinoff,你能举一些你的答案的例子吗,我们必须在其中放入 post 变量,
    • @whoami where ($var1 , $var2) in (($p1_name, $p2_name), ($p2_name, $p1_name) )afaik
    【解决方案2】:

    在 where 子句中使用 AND OR 时你做错了

    $ccc = "SELECT * FROM zapasy WHERE (playerName01 = '".$player1."' AND playerName02 ='".$player2."') OR (playerName01 = '".$player2."' AND playerName02='".$player1."')";
    

    试试这个@Patrik Dano

    【讨论】:

    • 我认为自己是一个最愚蠢的人,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    相关资源
    最近更新 更多