Не плохо было бы обработать ошибки
php.net/manual/ru/pdo.errorinfo.php
при выполнении prepare/execute
И еще - вечный цикл? Может по крону дергать? Это же время выполнения скрипта нужно делать вечным, у Вас в php.ini выставлено или на скрипт? Хотябы слип минимальный поставьте, а то как то не айс.
Да и что-то мне подсказывает, что идеология нарушена?
Мне кажется prepare нужно за цикл вынести и сделать это все транзакцией, нет?