Zusammenfassung der 11 häufigsten Fehler von MySQL-Anfängern

Zusammenfassung der 11 häufigsten Fehler von MySQL-Anfängern

Vorwort

Sie erhalten möglicherweise häufig Warn-E-Mails von Sicherheitsabteilungen zu SQL-Injection, XSS-Angriffsschwachstellen usw., und gelegentlich wird Ihr Computer von Hackern gehackt. Ist das nicht frustrierend? Die Ausführung der Datenbank ist zu langsam (erfahrungsgemäß liegt dies hauptsächlich an der falschen Verwendung von Indizes). Folgen wir dem Editor und sehen uns die 11 häufigsten Fehler von MySQL-Neulingen an.

1. Verwenden Sie MyISAM anstelle von InnoDB

MySQL verfügt über viele Datenbank-Engines, aber im Allgemeinen werden MyISAM und InnoDB verwendet.

Standardmäßig wird MyISAM verwendet. Wenn Sie jedoch nicht gerade eine sehr einfache Datenbank einrichten oder nur experimentieren, ist dies meistens die falsche Wahl. MyISAM unterstützt keine Fremdschlüsseleinschränkungen, was für die Gewährleistung der Datenintegrität von entscheidender Bedeutung ist. Darüber hinaus sperrt MyISAM beim Hinzufügen oder Aktualisieren von Daten die gesamte Tabelle, was bei zukünftigen Erweiterungsleistungen zu erheblichen Problemen führen kann.

Die Lösung ist einfach: Verwenden Sie InnoDB.

2. Verwenden der MySQL-Methode von PHP

PHP hat von Anfang an MySQL-Funktionsbibliotheken bereitgestellt. Viele Programme verlassen sich auf mysql_connect, mysql_query, mysql_fetch_assoc usw., aber

Das PHP-Handbuch schlägt vor:

Wenn Sie MySQL Version 4.1.3 oder höher verwenden, wird dringend empfohlen, die mysqli-Erweiterung zu verwenden.

mysqli oder MySQL Advanced Extensions hat einige Vorteile:

Verfügt über eine objektorientierte Schnittstelle

vorbereitete Anweisungen (vorverarbeitete Anweisungen können SQL-Injection-Angriffe wirksam verhindern und die Leistung verbessern)

Unterstützt mehrere Anweisungen und Transaktionen

Wenn Sie darüber hinaus mehrere Datenbanken unterstützen möchten, sollten Sie PDO in Betracht ziehen.

3. Benutzereingaben nicht filtern

Es sollte heißen: Vertrauen Sie niemals Benutzereingaben. Verwenden Sie Backend-PHP, um alle Eingabeinformationen zu überprüfen und zu filtern. Vertrauen Sie keinem JAVAscript. SQL-Anweisungen wie die folgenden sind leicht anfällig:

$Benutzername = $_POST["Name"]; 
$password = $_POST["Passwort"]; 
$sql = "SELECT userid FROM usertable WHERE username='$username'AND password='$password';"; // Abfrage ausführen...

Wenn der Benutzer in diesem Code „admin';“ eingibt, entspricht dies dem Folgenden:

SELECT Benutzer-ID FROM Benutzertabelle WHERE Benutzername='admin';

Auf diese Weise kann sich der Eindringling als Administrator anmelden, ohne ein Kennwort einzugeben.

4. Keine Verwendung von UTF-8

Benutzer im Vereinigten Königreich und in den USA berücksichtigen Sprachprobleme selten, was dazu führt, dass viele Produkte anderswo nicht verwendet werden können. Es gibt auch einige GBK-codierte, die ebenfalls große Probleme verursachen.

UTF-8 löst viele Internationalisierungsprobleme. Obwohl PHP6 dieses Problem perfekter lösen kann, hindert es Sie nicht daran, den MySQL-Zeichensatz auf UTF-8 einzustellen.

5. Verwenden Sie PHP, wo SQL verwendet werden sollte

Wenn Sie mit MySQL noch nicht vertraut sind, möchten Sie ein Problem unter Umständen manchmal mit einer Ihnen vertrauten Sprache lösen. Dies kann zu Ausschuss und schlechter Leistung führen. Beispielsweise wird bei der Berechnung des Durchschnitts nicht die native MySQL-Methode AVG() verwendet. Stattdessen werden mit PHP alle Werte in einer Schleife durchlaufen und anschließend addiert, um den Durchschnitt zu berechnen.

Seien Sie auch vorsichtig mit der PHP-Schleife innerhalb der SQL-Abfrage. Es ist normalerweise effizienter, die Ergebnisse in PHP zu durchlaufen, nachdem alle Ergebnisse abgerufen wurden.

Generell lässt sich sagen, dass der Einsatz leistungsfähiger Datenbankmethoden bei der Verarbeitung großer Datenmengen zu einer Effizienzsteigerung führen kann.

6. Keine Optimierung der Abfragen

99 % der PHP-Leistungsprobleme werden durch die Datenbank verursacht. Eine fehlerhafte SQL-Anweisung kann Ihr gesamtes Programm sehr verlangsamen. Die EXPLAIN-Anweisung von MySQL, der Query Profiler und viele andere Tools können Ihnen dabei helfen, diese fehlerhaften SELECT-Anweisungen zu finden.

7. Verwendung des falschen Datentyps

MySQL stellt eine Reihe von Datentypen wie Zahlen, Zeichenfolgen und Zeitangaben zur Verfügung. Wenn Sie Daten speichern möchten, verwenden Sie die Typen DATE oder DATETIME. Die Verwendung von Ganzzahlen oder Zeichenfolgen macht die Sache komplizierter.

Manchmal möchten Sie Ihre eigenen Datentypen verwenden, beispielsweise um serialisierte PHP-Objekte in Zeichenfolgen zu speichern. Das Hinzufügen einer Datenbank ist möglicherweise einfach, MySQL wird dann jedoch umständlich und kann später zu Problemen führen.

8. Verwenden Sie * in der SELECT-Abfrage

Verwenden Sie nicht *, um alle Felder in einer Tabelle zurückzugeben, da dies sehr langsam wäre. Sie müssen nur die Datenfelder extrahieren, die Sie benötigen. Wenn Sie alle Felder entfernen müssen, muss Ihre Tabelle möglicherweise geändert werden.

9. Unter- oder Überindizierung

Generell sollten alle Felder, die in der SELECT-Anweisung nach WHERE erscheinen, indiziert werden.

Angenommen, unsere Benutzertabelle hat eine numerische ID (Primärschlüssel) und eine E-Mail-Adresse. Nach der Anmeldung sollte MySQL die entsprechende ID per E-Mail finden. Mithilfe des Index kann MySQL E-Mails über Suchalgorithmen schnell finden. Wenn kein Index vorhanden ist, muss MySQL jeden Datensatz überprüfen, bis es ihn findet.

In diesem Fall möchten Sie möglicherweise jedem Feld einen Index hinzufügen. Dies hat jedoch zur Folge, dass beim Aktualisieren oder Hinzufügen der Index neu erstellt wird und bei großen Datenmengen Leistungsprobleme auftreten. Indizieren Sie daher nur die Felder, die Sie benötigen.

10. Keine Sicherungen durchführen

Es kommt zwar nicht oft vor, aber Datenbankbeschädigungen, Festplattenausfälle, Diensteausfälle usw. können katastrophale Schäden an Daten verursachen. Achten Sie deshalb stets auf die automatische Sicherung Ihrer Daten bzw. das Anlegen einer Kopie.

11. Außerdem: Andere Datenbanken nicht berücksichtigen

MySQL ist möglicherweise die am häufigsten verwendete Datenbank für PHP, aber nicht die einzige Wahl. Konkurrenten sind auch PostgreSQL und Firebird, die beide Open Source sind und nicht von bestimmten Unternehmen kontrolliert werden. Microsoft stellt SQL Server Express bereit, Oracle hat 10g Express und von diesen Enterprise-Level-Versionen gibt es auch kostenlose Versionen. SQLite ist auch für einige kleine oder eingebettete Anwendungen eine gute Wahl.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels jedem beim Erlernen oder Verwenden von MySQL hilfreich sein kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen.

Das könnte Sie auch interessieren:
  • Ein Einsteigerhandbuch zu gängigen Befehlen für den Betrieb von MySQL-Datenbanken und -Tabellen
  • Konfiguration einer PHP-Debugging-Umgebung für Anfänger (IIS+PHP+MYSQL)
  • MySQL-Anfängerhandbuch - Kurzreferenz
  • Zusammenfassung zur Behandlung häufiger MySQL-Fehlermeldungen
  • Eine Sammlung häufiger MySQL-Fehler
  • Teilen Sie einige häufige Mysql-Fehler und -Lösungen
  • Analyse und Lösung häufiger MySQL-Fehler
  • Was sind die häufigsten MySQL-Fehler? Schnelle Lösungen für häufige MySQL-Fehler

<<:  Javascript zum Erzielen eines Trommeleffekts

>>:  Eine einfache Methode zum Implementieren einer geplanten Sicherung einer MySQL-Datenbank unter Linux

Artikel empfehlen

Einstellungen für den Ubuntu-Boot-Autostart-Dienst

So erstellen Sie einen Dienst und starten ihn aut...

Natives JS zum Erzielen eines nahtlosen Karusselleffekts

Native js realisiert den Karusselleffekt (nahtlos...

HTML-Tabellen-Tag-Tutorial (19): Zeilen-Tag

Die Attribute des <TR>-Tags werden verwende...

JavaScript generiert dynamisch eine Tabelle mit Zeilenlöschfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Lassen Sie sich die tiefe Kopie von js verstehen

Inhaltsverzeichnis js tiefe Kopie Methode der Dat...

Wichtige Updates für MySQL 8.0.23 (neue Funktionen)

Autor: Guan Changlong ist DBA in der Delivery Ser...

MySQL5.7 Master-Slave-Konfigurationsbeispielanalyse

Implementierungsmethode für die MySQL5.7-Master-S...

Übersicht über die Zeitkonfiguration unter Linux-System

1. Zeitarten werden unterteilt in: 1. Netzwerkzei...