[英]MySQL: detect if values exists in DB
我收到类似(逗号分隔符)的值列表
D1,D2,D3
我需要检查每个值是否都存在于数据库中(检查D1是否存在,D2和D3)
我知道我可以循环并向数据库发送“ N”个查询(但有时会收到很长的清单)
MySQL中是否有任何自动方式来处理此问题? 或在PHP中
要匹配的表:
id data
1 D1
2 D3
3 D4
4 D5
谢谢,
要检查它是否存在,您需要查询数据库,如下所示:
SELECT data FROM table WHERE `data` IN ('D1','D2','D3')
或循环查看,分别查找每个值(取决于您应用的逻辑)
foreach( ... ) {
select ....
}
尝试这个:
SELECT * FROM table WHERE `data` IN ('D1','D2','D3').
您可以使用此查询
select * from table where data in ('D1','D2','D3','D4')
这是一个片段,您可以在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";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.