To také není úplně pravda.
Vždyť sám píšete:
Pak je zde samozřejmě metoda query()
Vida, takže přeci jen to pravda je.
která vykoná dotaz jak leží - zde spoléhá na pisatele, aby si ho ošetřil
Proč? K čemu je taková funkce dobrá? Kdyby ta funkce jako druhý parametr brala pole parametrů, radši to programátor použije, než by hodnoty vkládal do dotazu ručně. A programátora, který to nezná, by to nejspíš aspoň trklo, že se to takhle dá použít. A pokud by někdo opravdu potřeboval hodnoty do dotazu vložit ručně, pořád by měl možnost to udělat a pole parametrů předat prázdné. Pořád by tu byl prostor pro chyby, ale aspoň by to k těm chybám programátora nenavádělo.
je zde funkce esc_sql, která to zařídí
Tyhle funkce, které „to zařídí“, jsou snad ještě větší zlo. Escapování parametrů je špatné samo o sobě, a když se k tomu ještě přidá funkce, která „to zařídí“ a programátor netuší, co a proč vlastně dělá, je to na nejlepší cestě, aby někde něco oescapoval dvakrát, pak to zjistí, escapování odstraní a vyrobí tím SQL injection, a ještě si bude pamatovat, že to příště nemá používat, protože „to nefungovalo“.