MySQL:检测DB中是否存在值

时间:2014-10-27 09:18:39

标签: php mysql sql

我收到了像(逗号分隔符)

这样的值列表
D1,D2,D3

我需要检查DB中是否存在这些值中的每一个(检查D1是否存在,D2和D3)

我知道我可以循环并向DB发送“N”个查询(但有时我会收到长列表)

MySQL中是否有任何自动处理方法?或者在PHP中

表格与:

匹配
id     data
1       D1
2       D3
3       D4
4       D5

感谢,

4 个答案:

答案 0 :(得分:2)

要检查它是否存在,您需要查询数据库,如下所示:

SELECT data FROM table WHERE `data` IN ('D1','D2','D3')

或循环,分别查找每个值(取决于您的应用程序的逻辑)

foreach( ... ) {
   select ....
}

答案 1 :(得分:1)

试试这个:

SELECT * FROM table WHERE `data` IN ('D1','D2','D3').

答案 2 :(得分:1)

您可以使用此查询

select * from table where data in ('D1','D2','D3','D4')

答案 3 :(得分:1)

这是一个可以在PHP中使用的片段,用于检索所需的信息。

// setup database connection
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
// define the list of values to check for 
$values_list = "D1,D2,D3";
// explode list into array
$values = explode(',', $values_list);
// initiate empty array for database values
$db_values = array();
// create the query
$query = "SELECT data FROM table WHERE `data` IN ('" . implode("','", $values) . "')";
// run the query
if ($result = mysqli::query($query)) { 
    // loop through results and add values to database value array
    while($obj = $result->fetch_object()){ 
        $db_values[] = $obj->data;
    } 
} 
$result->close();
// go through given values and check if they are in database value array or not, print result
foreach ($values AS $value) {
    if (in_array($value, $db_values)) {
        echo "Value $value exists in database.\r\n";
    }
    else {
        echo "Value $value does not exist in database.\r\n";
    }
}