从数据库中获取同一列的两行不同值(MySQL)

时间:2018-02-13 10:36:08

标签: php mysql

我有这个奇怪的要求,其中两个输入过滤器将选择在两个输入框中具有列值类型的不同行。

示例代码:

Row value1    value2
1.    2         1
2.    1         3
3.    2         1
4.    1         1
5.    1         1
6.    2         1

HTML:

<input type="number" name="home1"> <input type="number" name="away1">
<input type="number" name="home2"> <input type="number" name="away2">

PHP:

    //total scores 1
    if(isset($_POST['home1']))
    {
        $home1 = $_POST['home1'];
    }
    if(isset($_POST['away1']))
    {
        $away1 = $_POST['away1'];
    }

    //Score 2
    if(isset($_POST['home2']))
    {
        $home2 = $_POST['home2'];
    }
    if(isset($_POST['away2']))
    {
        $away2 = $_POST['away2'];
    }

从数据库中获取值

if(!empty($home1) && !empty($away1) && !empty($home2) && !empty($away2))
 {
   echo "Valid inputs";
   $result = $wpdb->get_results ( "SELECT * FROM  `tbl_api` WHERE 
   (`value1` = $home1 AND `value2` = $away1) AND 
   (`value1` = $home2 AND `value2` = $away2)");
 }

我真正想要的是一次查询两个输入字段并根据输入值显示结果。例如:如果我在第一个输入字段中放入1&amp; 2,它将显示表格行,其中列值为value1&amp; value2是1&amp; 2 ..

同时,如果我在下一个输入框中输入1&amp; 1,它将显示包含1&amp; 1列值的所有行。

总结:它应该显示列值为1&amp; 2和1&amp; 1的行(根据两列中的输入值)。

当我这样做时 - 它只显示第一个或第二个输入值的结果,而不是一次显示它们(实际上是我的要求)。

如果有人能够阐明这一点 - 会感谢自愿帮助。

2 个答案:

答案 0 :(得分:0)

嗯,首先,永远不要信任userinput,使用PDO来处理来自用户的params。 你在查询中有逻辑错误,因为value2不能同时被赋值为1和2。

WHERE 
(`value1` = $home1 AND **`value2` = $away1**) AND 
(`value1` = $home2 AND **`value2` = $away2)**");

答案 1 :(得分:0)

考虑下表:

Row_ID   value1    value2
1        2         1
2        1         3
3        2         1
4        1         1
5        1         1
6        2         1

现在,如果用户输入是:

home1 = 2 and away1 = 1
home2 = 1 and away2 = 1

此查询将完成此任务:

SELECT * 
FROM tbl_api 
WHERE (value1 = 2 AND value2 =1 )
      OR 
      (value1 =1  AND value2 = 1);

输出结果为:

Row_ID   value1    value2
1        2         1
3        2         1
4        1         1
5        1         1
6        2         1