Это
mysql_query('SELECT * FROM mytable WHERE id < ' . mysql_real_escape_string($id));
будет плохая практика. Если вы хотите, чтобы быть строка, по крайней мере процитировать строку:
mysql_query('SELECT * FROM `mytable` WHERE `id`<"'.mysql_real_escape_string($id)).'"';
(и в то время как вы на него, цитирую все имена полей и таблиц, а также, для таких вещей, как id
могло бы быть или стать зарезервированных ключевых слов в какой-то момент)
Я бы предпочел бросок, если он является целым числом. Один аргумент для строковой версии состоял бы в том, что в какой-то день идентификатор может быть буквенно-цифровым (как это видно все чаще на многих веб-сайтах).
В вашем втором блоке кода есть отверстие для SQL-инъекции, потому что вы не дважды указывали вывод из 'mysql_real_escape_string()'. – Johan