在两列中查找两个值
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))
我在我的网站上使用准备好的语句实施 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))