我收到了像(逗号分隔符)
这样的值列表D1,D2,D3
我需要检查DB中是否存在这些值中的每一个(检查D1是否存在,D2和D3)
我知道我可以循环并向DB发送“N”个查询(但有时我会收到长列表)
MySQL中是否有任何自动处理方法?或者在PHP中
表格与:
匹配id data
1 D1
2 D3
3 D4
4 D5
感谢,
答案 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";
}
}