А чем плох Php? Чем плох JS? Все зависит от Вас.
А так первое что приходит в голову, проблемы с расширяемостью. Хотя х.з.
"Нужно забить гвоздь, возьми молоток и забей".
Плюсы тоже есть. Все решать Вам.
Как вариант:
1) Находить MAX,MIN значения id
2) Генерировать число в интервале MIN, MAX => randId
3) Делать запрос WHERE id>=randId LIMIT 1
Еще вариант держать столбик с непрерывным значением. Главная проблема Удаление, т.к придется делать -1 для всех значений, которые больше удаляемого.
Так на вскидку больше ничего не приходит
Сейчас еще перечитал тему. Тут временная таблица поможет. Сначала выбрали, а потом второй вариант.
Табличка будет что-то типа
id increment
Сделали таблицу, нашли MAX(increment), сгенерили число 1<=число<=MAX(increment),
сделали запрос.
Как-то так
Вы же используете эту переменную в двух местах? Если PDO использует нативный синтаксис MySQL то должно помочь. Иначе смысла использовать PDO я вообще не вижу))