Du fait par exemple que PHP est un langage bien trop permissif, ne serait que bêtement par le typage de de données, ce qui laisse donc libre court à du tout et n'importe quoi.
Alors tu peux évidemment faire un super code avec du PHP mais on malheureusement tendance à voir que parce que PHP n'oblige pas tel truc, bah on s'en fout et on ne fait rien et puis on s'étonne de s'être fait piraté.
Si par exemple un ID doit être un nombre, si on imposait le type integer on aurait plus d'injections SQL à la con sur les ID non sécurisés.
Alors oui tu peux simplement vérifier qu'il s'agit d'un nombre (et faut le faire !) sauf que le gars débutant qui apprend le langage ne fera souvent pas du tout attention à ce genre de chose, jusqu’à ce qu'il aie une merde suite à ça.
Bref, dans le web (et dans l'informatique en général en fait xD) il y a une bonne règle à retenir qui est de ne JAMAIS (et on insiste bien sur ce jamais !) faire confiance aux données provenant de l'utilisateur.