Det här är nästan en religiös diskussion beroende på vem du frågar. Det finns en känslig balans som utvecklare och dbas måste förena i dessa typer av fall.
I grund och botten är det här tänkandet du verkligen vill sätta i spel:
Om PHP-kod använder dynamisk SQL måste skydd mot SQL-injektionsattacker övervägas hela tiden. Indata MÅSTE saneras innan de läggs till databasen.
Om PHP-kod använder dynamisk SQL men konventionen är att använda förberedda uttalanden är du till viss del säkrare men försiktighet måste tas i hur de förberedda satserna används.
Om PHP-kod använder lagrade procedurer, tas mycket av kontrollen över SQL bort från utvecklaren och lämnas till DBA att arbeta med utvecklarna för att tillhandahålla en adekvat lösning som möter deras behov. Detta kan tyvärr orsaka mycket tid och ansträngning och gå fram och tillbaka på utveckling/underhåll.
Det är en av de saker som är en gråzon och det finns många skolor på vilken sida av ekvationen som är rätt eftersom de båda är från vissa synvinklar.