Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gibt es einen Grund, gespeicherte Prozeduren nicht für jede Abfrage zu verwenden?

Dies ist fast eine religiöse Diskussion, je nachdem, wen Sie fragen. Es gibt ein heikles Gleichgewicht, das Entwickler und Datenbankadministratoren in solchen Fällen in Einklang bringen müssen.

Im Grunde ist hier das Denken, das Sie wirklich ins Spiel bringen möchten:

Wenn PHP-Code dynamisches SQL verwendet, müssen Schutzmaßnahmen gegen SQL-Injection-Angriffe jederzeit berücksichtigt werden. Eingaben MÜSSEN bereinigt werden, bevor sie in die Datenbank gestellt werden.

Wenn PHP-Code dynamisches SQL verwendet, aber die Konvention darin besteht, vorbereitete Anweisungen zu verwenden, dann sind Sie bis zu einem gewissen Grad sicherer, aber es muss darauf geachtet werden, wie die vorbereiteten Anweisungen verwendet werden.

Wenn PHP-Code gespeicherte Prozeduren verwendet, wird dem Entwickler ein Großteil der Kontrolle über SQL entzogen und dem DBA überlassen, der mit den Entwicklern zusammenarbeitet, um eine angemessene Lösung bereitzustellen, die ihren Anforderungen entspricht. Dies kann leider viel Zeit und Mühe verursachen und bei der Entwicklung/Wartung hin und her gehen.

Es ist eines dieser Dinge, die sich in einer Grauzone befinden, und es gibt viele Denkschulen, auf welcher Seite der Gleichung die richtige ist, weil sie beide von bestimmten Standpunkten aus vertreten werden.