Esta é quase uma discussão religiosa, dependendo de quem você pergunta. Há um equilíbrio delicado que desenvolvedores e dbas precisam conciliar nesses tipos de casos.
Basicamente, aqui está o pensamento que você realmente quer colocar em jogo:
Se o código PHP estiver usando SQL dinâmico, as proteções contra ataques de injeção de SQL devem ser sempre consideradas. As entradas DEVEM ser higienizadas antes de serem colocadas no banco de dados.
Se o código PHP estiver usando SQL dinâmico, mas a convenção for usar instruções preparadas, você estará mais seguro até certo ponto, mas deve-se tomar cuidado em como as instruções preparadas são usadas.
Se o código PHP estiver usando procedimentos armazenados, muito do controle do SQL é removido do desenvolvedor e deixado para o DBA trabalhar com os desenvolvedores para fornecer uma solução adequada que atenda às suas necessidades. Infelizmente, isso pode causar muito tempo e esforço e ir e voltar no desenvolvimento/manutenção.
É uma daquelas coisas que é uma área cinzenta e há muitas escolas de pensamento sobre qual lado da equação está certo porque ambos são de certos pontos de vista.