Witam. Czy jest jakiś inny sposób na uchronienie kodu i lepsze zabezpieczenie przes SQL injection od stosowania PHP data object?
Myśle, że PDO jest całkiem ok pod tym względem. Jeśli potrzebujesz czegoś bardziej rozbudowanego, czegoś co dostarcza większą abstrakcje, możesz zobaczyć sobie: http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/
Jeśli korzystasz z czystego php lub małego frameworka to najprostsze jest pdo potem dokładna validacja (np liczba nic ci nie zrobi) oraz zamiana znaków (np. " na /"). W porządnych frameworkach programista nie musi się tym martwić.
Takim alternatywnym sposobem jest użycie tzw. query buildera. Czyli przykładowe zapytanie:
SELECT firstname, lastname, age FROM users WHERE firstname = 'John' ORDER BY lastname ASC
realizuje się w taki przykładowy sposób:
$users = DB::select('firstname', 'lastname', 'age')
->from('users')
->where('firstname', '=', 'John')
->order_by('lastname', 'ASC')
->execute()
->as_array();
https://kohanaframework.org/3.3/guide/database/query/builder
https://laravel.com/docs/5.3/queries#selects
http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html