Tipikus hozzászólás egy olvasni/értelmezni nemtudótól... Az (int) igenis alkalmas lehet arra, hogy kiküszöbölje a problémát (feltéve, hogy csak int lehet az ID-ben). Ellenkező esetben preg->bukta, mysql_real_escape_string->bukta. Az is_numeric-re még nem láttam működő megoldást, ennek ellenére már nem használom. Prepared statement mindenhol alapból, + is_numeric/(int) (mysqli, de mivel ahhoz van még mit fejleszteni főleg hibakezelésben, át fogok térni a PDO-ra). A preg-et megkerülő megoldások előtt kalapot emeltem, ebben a ferdeszeműek az ászok :)
A PHP biztonságról lehetne hónapokig tartó szemináriumokat tartani. A kedvencem a hogyan futtassunk PHP-t egy képfájlból, de még rengeteg ilyen vicces (legtöbbször Apacs alapbeállításra/funkcióra) visszavezethető módszer van hackelni. Logokból, és orosz klienscímekből kiindulva finom dolgokat találni...