А читать вы из базы вообще не будете?
Если вам надо очень быстро записать, и при этом пополам на возможность эти данные потерять, но читать все-же надо - сделайте таблицу в памяти. Благо тот-же мускуль такое умеет. И уже отдельным процессом скидывайте данные в нормальные таблицы.
что-то мне подсказывает, что Вас должен устроить Select с Join. Что-то типа:
SELECT COUNT(pa.id) as nummo, nsi.name_short FROM lpu_nsi nsi, patints_attachment pa WHERE pa.mo_code=nsi.mo_code AND pa.nompod=nsi.nompod GROUP BY nsi.name_short
в первом приближении выкиньте союзы и предлоги (?).
У вас получится " дем мороз новый год будет дарить подарки детям они будут рады"
во второй итерации можно местоимения перетрясти. А цель то какая?
PDO?
Хотя какой-бы ни был инструмент - им надо уметь пользоваться. в принципе в sql-инъекциях нет ничего невероятного, и PDO дает все необходимые для защиты инструменты.
IMHO вся Ваша проблема в дырках - остающемся свободном дне. добавте условие в первый скрипт, чтобы выбирался не первый попавшийся, а номер, у которого дата выезда совпадает с "датой нового заезда -1". Хотя реально в гостинице вроде же для этого и есть время вселения и время выселений - т.е. дата въезда и выезда вообще должны совпадать.
[A-Za-z.-_]+ означает любое коничество символов, состоящее из букв, дефисов, точек и подчеркиваний. т.е. как минимум стоит добавить сюда цифры. сейчас 2gis.ru, к примеру, не распарсится.
ну и можно ввести количество символов после точки, домен классически от 2 до 4 символов. Сделаете "2 и больше" - уже p.s. отбросится.