Каков наиболее эффективный способ в MySQL
и PHP
проверить, существует ли список всех идентификаторов? Я хочу, чтобы возвращаемый результат функции был 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; }
Есть ли способ лучше?
Вы можете получить результат в самой заявке 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'
Он вернет true только тогда, когда все идентификаторы существуют в таблице.