SNDizayn adlı üyeden alıntı: mesajı görüntüle
sizin örneğinizde id sayısının toplamı 3 ise bu olabilir ama multiselect de id sayısının toplam ne geleceği belli olmayacağı için bu işe yaramaz diye düşünüyorum.

ayrıca tablo yapısını değiştirmekten kastınız tam olarak nedir yani nasıl birşey öneriyorsunuz.
Verdiğim örneği yanlış anladınız muhtemelen. id sayısının önemi yok benim verdiğim örnekte. Sizin kaç adet id değeriniz varsa o kadar id kullanabilirsiniz ki zaten sizin yapınızda kullanmanız gereken de budur, alternatif aramanıza gerek yok. Sorgunun sonundaki FIND_IN_SET sayısı sizin elinizdeki id sayısı kadar tekrar etsin yeterli.

Tamamen örnek olsun diye şu kodu inceleyebilirsiniz:

<?php

$masalar = $_POST['masalar']; // Multiple geldiğini varsayıyorum.

$sorgu = "SELECT * FROM tablo_adi WHERE ";

$masalar_find_in_set = [];

foreach($_POST['masalar'] as $masa) {
    $masalar_find_in_set[] = "FIND_IN_SET('{$masa}', masalar)";
}

$sorgu .= implode(' OR ', $masalar_find_in_set);

$db->query($sorgu);
Seyum adlı üyeden alıntı: mesajı görüntüle
$masalar= implode(',', $_POST['masalar']);

$cek = $db->prepare("SELECT * FROM masa  WHERE masalar IN ($masalar)");
$cek->execute();
foreach ($cek as $key) {
    //İşlemler.
}
Bu şekilde düşündünüz mü ?
Bu örnekte $masalar değişkeninden gelen sıralama nasılsa veritabanında sadece onu arar, bu da sonsuz ihtimal olduğu için sorguyu sonuçsuz döndürür.