info['id']; $cols = count($itemIds); $check = Db::getValue( 'select count(*) from items_users where item_id in (?) and uid = ? and (`delete` = 0 or `delete` = 1000)', [implode(',', $itemIds), $uid] ); if ($cols === $check) { return []; } $arr = $itemIds; $query = 'select item_id from (select ' . $arr[0] . ' item_id'; $arr[0] = ''; $query .= implode(' union select ', $arr); $query .= ') params left join items_users using (item_id) where items_users.item_id is null '; $query .= 'and uid = ? and (`delete` = 0 or `delete` = 1000)'; //select item_id from (select 1 item_id union select 2 union select 3) params left join items_users using (item_id) where items_users.item_id is null return Db::getColumn($query, [$uid]); } public static function getNamesByIds(array $ids, string $separator = ', '): string { $namesArray = Db::getColumn('select name from items_main where id in (?)', [$ids]); return implode($separator, $namesArray); } //Удаление определенного типа предметов /** Удаление предметов из инвентаря активного игрока. * @param int $id id предмета. * @param int $coldel количество предметов. * @return void */ public static function deleteItemsById(int $id, int $coldel = 1) { Db::sql( 'update items_users set `delete` = unix_timestamp() where id in (select id from items_users where item_id = ? and uid = ? and (`delete` = 0 or `delete` = 1000) order by inGroup desc limit ?)', [$id, User::start()->info['id'], $coldel] ); } }