Zuerst sehe ich, dass Sie stripslashes()
verwenden. Das bedeutet, dass Sie magische Zitate haben. Ich würde vorschlagen, das auszuschalten.
Was Sie vielleicht tun möchten, ist etwas davon in eine Funktion einzufügen:
%Vor%und dann:
%Vor%All dies reduziert jedoch die Menge an Standardwerten, die Sie leicht haben.
Einige haben vorgeschlagen, hierfür PDO oder mysqli zu verwenden, damit Sie vorbereitete Anweisungen verwenden können. Während sie nützlich sein können, ist es sicherlich nicht notwendig. Sie entziehen sich den Feldern, so dass Behauptungen der Anfälligkeit für SQL-Injection (zumindest im Falle dieses Codes) fehlgeleitet sind.
Zuletzt würde ich keine Abfrage auf diese Weise erstellen. Zum einen beruht es auf Spalten in der Unternehmenstabelle, die eine bestimmte Art und Reihenfolge aufweisen. Es ist viel besser, dies ausdrücklich zu erwähnen. Normalerweise mache ich das:
%Vor%Das reicht für die Aufgabe aus. Sie können natürlich mit mysqli oder PDO untersuchen, aber es ist nicht notwendig.
Anstatt den Wert direkt in die Abfrage einzufügen, verwenden Sie vorbereitete Anweisungen und Parameter , die nicht anfällig für SQL-Injektion sind.
%Vor% Das Erstellen eines PDO-Objekts (das auch eine Verbindung zum DB herstellt und somit ein Gegenstück zu mysql_connect
ist) ist einfach:
Sie sollten das nicht in jedem Skript streuen, wo Sie eine DB-Verbindung haben wollen. Zum einen ist es eher ein Sicherheitsrisiko. Zum anderen ist Ihr Code anfälliger für Tippfehler. Die Lösung behebt beide Probleme: Erstellen Sie eine Funktion oder eine Methode, die die DB-Verbindung einrichtet. Zum Beispiel:
%Vor%Wenn Sie mit einem Array aus mehr als zwei oder drei Elementen arbeiten, sollten Sie Schleifen oder Array-Funktionen anstelle einer langen Folge ähnlicher Anweisungen verwenden, wie es im Beispielcode der Fall ist. Zum Beispiel kann der Großteil Ihres Samples durch Folgendes ersetzt werden:
%Vor%Hier finden Sie ein umfassenderes Beispiel zum Erstellen einer Einfügeabfrage. Es ist weit von der Produktion entfernt, aber es veranschaulicht die Grundlagen.
%Vor% Um es produktionsbereit zu machen, sollte der Code in Funktionen oder Klassen umgestaltet werden, die alles, was mit der Datenbank in Beziehung steht, verbergen. Dies wird als " Datenzugriffsebene " bezeichnet. Die Verwendung von $fields
zeigt eine Möglichkeit, Code zu schreiben, der für beliebige Tabellenstrukturen funktioniert. Weitere Informationen finden Sie in den Model-View-Controller "Architekturen. Außerdem sollte eine Validierung durchgeführt werden.
Ich dachte, ich würde eine Option hinzufügen, die die Frage "Gibt es eine Funktion in PHP, die Anführungszeichen zu einer Zeichenfolge hinzufügt?" - ja, Sie können str_pad()
, obwohl es wahrscheinlich einfacher ist, es manuell zu machen.
Die Vorteile dieser Funktion sind, dass Sie auch ein Zeichen übergeben können, das die Variable nativ innerhalb von PHP umschließt:
%Vor%Tu das nicht. Verwenden Sie stattdessen parametrisierte Abfragen, z. B. mit PDO .
Dies ist keine Funktion - aber es ist der erste Post, der bei google erscheint, wenn Sie "php wrap string in Anführungszeichen" eingeben. Wenn jemand eine vorhandene Zeichenfolge nur in Anführungszeichen setzen möchte, ohne sie vorher durch eine Funktion zu führen, gibt es hier die richtige Syntax:
%Vor%