简体   繁体   English

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

[英]Fetch two rows of different values of the same column from database (MySQL)

I've this bizarre requirement where two input filter will pick different rows that has column value type in that two input box. 我有一个奇怪的要求,其中两个输入过滤器将选择在两个输入框中具有列值类型的不同行。

Sample code: 样例代码:

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

HTML: HTML:

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

PHP: 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'];
    }

Fetch values from database 从数据库中获取值

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)");
 }

What I actually want here is to query two input fields at a time and display result as per the input value. 我在这里真正想要的是一次查询两个输入字段,并根据输入值显示结果。 For eg: if I put 1&2 in first input field, it will display table rows where the column value of value1 & value2 is 1&2.. 例如:如果我在第一个输入字段中输入1&2,它将显示表行,其中value1&value2的列值为1&2。

At the same time if I input 1&1 in next input box, it will display all the rows containing 1&1 column values. 同时,如果我在下一个输入框中输入1&1,它将显示包含1&1列值的所有行。

To sum up: It should be displaying rows where the column values are 1&2 and 1&1 (as per the input values in both column). 总结:应该显示列值分别为1&2和1&1的行(根据两列中的输入值)。

When i do this - it only shows the result of first or second input values not both of them at a time (which actually is my requirement). 当我这样做时-一次只显示第一个或第二个输入值的结果,而不是两个都显示(这实际上是我的要求)。

If someone can shed light on this - would appreciate voluntary help. 如果有人可以阐明这一点-将不胜感激。

Well, at first, never trust userinput, use PDO to handle params from user. 好吧,起初,不要信任用户输入,请使用PDO处理用户的参数。 You have logic mistake in query because value2 can't be valued as 1 and 2 in same time. 您在查询中存在逻辑错误,因为value2不能同时设为1和2。

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

Consider this table : 考虑此表:

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

Now, if the user input is : 现在,如果用户输入为:

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

This query would do the job : 此查询将完成这项工作:

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

The output is : 输出为:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM