SQL injection is less common than it used to be, in part due to a public education campaign and in part because there's a move away from having humans write SQL. It still happens though, and I think the reason it was such a problem is it's pretty tempting to just stick some strings together and throw it at your DB. Like it seems easy to just use prepared statements, and it is, but when you're sitting there with strings, everyone knows the string API, not so much whatever db driver they happen to be using. Just one of those occasional pitfalls of laziness I guess.