在两列中查找两个值

Find two values in two columns

我在我的网站上使用准备好的语句实施 OOP PHP。

我有以下 table 名称,“table”:

rowID id1 id2 name1 name2
1 55 56 name55 name56
2 55 60 name55 name60
3 54 55 name54 name55

我有两个用户定义的 ID 需要与 id1 或 id2 列匹配。

注意id1 < id2 表示如果用户定义的值是id1 > id2,将找不到匹配项。那是我的问题。我无法检查是否找到组合 id1 和 id2,无论 id1 > id2 还是 id1 < id2.

如何使用占位符来做到这一点?

PHP代码:

public function getMatch($id, $id2)
    {
        $sql = "SELECT * FROM table WHERE id1 = ? AND id2 = ?";
        $stmt = $this->connect()->prepare($sql);
        $stmt->execute([$id, $id2]);
        $outputs = $stmt->fetchAll();
        
         foreach ($outputs as $output) {
            echo $output["name1"];
            echo $output["name2"];
        }  
        
    }

处理用户定义的 ID:

    $Match = new getMatch();
    $Match->getMatch($input1, $input2);

如果input1=id1=56 和input2=id2=55,即使存在id1=55 和id2=56,也找不到匹配项。

现在我只是在避免这个“解决方案”的问题:

    $Match->getMatch($input1, $input2);
    $Match->getMatch($input2, $input1);

其中一个将始终有效,而另一个 returns 无效。但我需要更优雅地完成它。

您可以像这样使用运算符 IN

SELECT *
FROM tablename
WHERE (?, ?) IN ((id1, id2), (id2, id1))
SELECT *
FROM t
WHERE (?, ?) IN ((id1, id2), (id2, id1))