MySQL
和PHP
检查ID列表是否全部存在的最有效方法是什么?如果所有 ID存在,我希望函数返回结果为true
,否则为false
。
我在想:
$ids = array(2233, 5545, 9478, 5343, 3545);
do_all_groups_exist($ids);
function do_all_groups_exist(array $ids = array()) {
if(empty($ids)) {
return true;
}
$SQL = "SELECT count(`id`) as count
FROM groups
WHERE `id` IN (" . implode(',', $ids) . ")";
...
$row = mysqli_fetch_object($result);
return (intval($row->count) === count($ids)) ? true : false;
}
有更好的方法吗?
答案 0 :(得分:4)
您可以在sql语句本身中获得结果
$countids= count($ids);
$sql= "SELECT CASE WHEN (
SELECT count(id) as cnt
FROM groups
WHERE id IN (" . implode(',', $ids) . ") )=$countids
THEN 'true'
ELSE 'false' END as result"
...
$row=mysqli_fetch_array($result);
echo $row['result'];
您将从coloumn名称'result'
获得结果只有当表中存在所有ID时,它才会返回true。