Heim  >  Artikel  >  Datenbank  >  Zusammenfassung von 11 häufigen Fehlern bei MySQL-Aufrufen

Zusammenfassung von 11 häufigen Fehlern bei MySQL-Aufrufen

黄舟
黄舟Original
2017-03-21 13:51:351046Durchsuche

Für viele Anfänger kann die Verwendung von PHP in nur wenigen Stunden problemlos Code mit bestimmten Funktionen schreiben. Der Aufbau einer stabilen und zuverlässigen Datenbank erfordert jedoch einige Zeit und Fähigkeiten. Der folgende Artikel fasst die elf häufigsten Fehler zusammen, die Anfänger beim Aufrufen von MySQL machen. Freunde in Not können sich darauf beziehen.

Vorwort

Sie erhalten möglicherweise häufig Warn-E-Mails von der Sicherheitsabteilung über SQL-Injection, Schwachstellen bei XSS-Angriffen usw . und gelegentlich von Hackern ausgetrickst werden, sind Sie deprimiert? Darüber hinaus ist die Datenbankausführung zu langsam (erfahrungsgemäß liegt dies im Wesentlichen an der falschen Verwendung des Index ). Schauen wir uns die 11 häufigsten Fehler an, die MYSQL-Neulinge machen.

1. Verwenden Sie MyISAM anstelle von InnoDB

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

MyISAM wird standardmäßig verwendet. Aber es sei denn, Sie erstellen eine sehr einfache Datenbank oder machen es nur experimentell, ist dies in den meisten Fällen die falsche Wahl. MyISAM unterstützt keine Fremdschlüssel-Einschränkungen, was für die Gewährleistung der Datenintegrität von entscheidender Bedeutung ist. Darüber hinaus sperrt MyISAM beim Hinzufügen oder Aktualisieren Daten die gesamte Tabelle, was zu großen Problemen bei der zukünftigen Erweiterungsleistung führen wird.

Die Lösung ist einfach: Verwenden Sie InnoDB.

2. Verwenden Sie die MySQL-Methode von PHP

PHP hat von Anfang an MySQL-Funktionen bereitgestellt. Viele Programme basieren auf mysql_connect, mysql_query, mysql_fetch_assoc usw., aber

Das PHP-Handbuch empfiehlt:

Wenn die von Ihnen verwendete MySQL-Version 4.1 ist. 3 Danach wird dringend empfohlen, die MySQLi-Erweiterung zu verwenden.

MySQL oder die erweiterte Erweiterung von MySQL hat einige Vorteile:

hat eine objektorientierte Schnittstelle

Prepared-Statements-Anweisung, Dies kann SQL-Injection-Angriffe wirksam verhindern und die Leistung verbessern)

Unterstützt mehrere Anweisungen und Transaktionen

Wenn Sie außerdem mehrere Datenbanken unterstützen möchten, sollten Sie Check in Betracht ziehen aus gU.

3. Benutzereingaben nicht filtern

sollte sein: Vertraue dem Benutzer niemals eingeben. Verwenden Sie Back-End-PHP, um alle Eingabeinformationen zu überprüfen und zu filtern. Vertrauen Sie nicht JAVAscript. SQL-Anweisungen wie die folgenden können leicht angegriffen werden:

$username = $_POST["name"]; 
$password = $_POST["password"]; 
$sql = "SELECT userid FROM usertable WHERE username='$username'AND password='$password';"; // run query...

Code wie dieser entspricht, wenn der Benutzer „admin';“ eingibt, dem Folgenden:

SELECT userid FROM usertable WHERE username='admin';

Auf diese Weise , kann sich der Eindringling als Admin anmelden, ohne ein Passwort einzugeben.

4. Verwenden Sie kein UTF-8

Diese Benutzer im Vereinigten Königreich und die Vereinigten Staaten sind sehr. Eine geringere Berücksichtigung von Sprachproblemen wird dazu führen, dass viele Produkte anderswo nicht verwendet werden können. Es gibt auch einige GBK-Kodierungen, die viel Ärger verursachen.

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

5. Verwenden Sie PHP, wo SQL verwendet werden sollte

Wenn Sie neu bei MySQL sind, kann es manchmal eine Lösung sein Das Problem Manchmal sollten Sie erwägen, zuerst eine Sprache zu verwenden, mit der Sie vertraut sind. Dies kann zu Verschwendung und schlechter Leistung führen. Beispiel: Bei der Berechnung des Durchschnitts wird nicht die native MySQL-Methode AVG() verwendet, sondern PHP wird verwendet, um alle Werte in einer Schleife zu durchlaufen und sie dann zu akkumulieren, um den Durchschnitt zu berechnen.

Achten Sie auch auf die PHP-Schleife in der SQLAbfrage. Oftmals ist es effizienter, PHP zu durchlaufen, nachdem alle Ergebnisse vorliegen.

Im Allgemeinen kann der Einsatz leistungsstarker Datenbankmethoden bei der Verarbeitung großer Datenmengen die Effizienz verbessern.

6. Abfragen werden nicht optimiert

99 % der PHP-Leistungsprobleme werden durch die Datenbank verursacht, eine schlechte Regel SQL-Anweisungen können Ihr gesamtes Programm sehr langsam machen. Die EXPLAIN-Anweisung von MySQL, Query Profiler und viele andere Tools können Ihnen dabei helfen, diese unanständigen SELECTs zu finden.

7. Verwendung des falschen Datentyps

MySQL liefert eine Reihe von Zahlen und Zeichen Datentypen wie Zeichenfolge, Zeit usw. Wenn Sie Datumsangaben speichern möchten, verwenden Sie den Typ DATE oder DATETIME. Die Verwendung von Ganzzahlen oder Zeichenfolgen macht die Sache komplizierter.

Manchmal möchten Sie Ihren eigenen Datentyp verwenden, beispielsweise die Verwendung von Zeichenfolgen zum Speichern serialisierter PHP-Objekte. Das Hinzufügen von Datenbanken mag einfach sein, aber dann wird MySQL unhandlich und kann später zu Problemen führen.

8. Verwenden Sie *

in der SELECT-Abfrage. Verwenden Sie nicht *, um alle Felder in der Tabelle zurückzugeben. Das wird sehr langsam sein. Sie müssen nur die benötigten Datenfelder herausnehmen. Wenn Sie alle Felder entfernen müssen, muss möglicherweise Ihre Tabelle geändert werden.

9. Unterindizierung oder Überindizierung

Im Allgemeinen sollte der Index nach WHERE in der erscheinen SELECT-Anweisung Alle Felder.

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. Durch die Indizierung kann MySQL E-Mails mithilfe des Suchalgorithmus schnell finden. Ohne einen Index müsste MySQL jeden Datensatz überprüfen, bis er gefunden wird.

In diesem Fall möchten Sie möglicherweise jedem Feld einen Index hinzufügen. Dies hat jedoch zur Folge, dass der Index beim Aktualisieren oder Hinzufügen neu erstellt wird, wenn die Datenmenge zunimmt groß, wird es Leistungsprobleme geben. Indizieren Sie daher nur die erforderlichen Felder.

Kein Backup

Es kommt vielleicht nicht oft vor, aber die Datenbank ist beschädigt, die Festplatte schon B. kaputt geht, der Dienst angehalten wird usw. usw., führt dies zu katastrophalen Schäden an den Daten. Sie müssen daher sicherstellen, dass Ihre Daten automatisch gesichert oder eine Kopie gespeichert werden.

11. Außerdem: Andere Datenbanken werden nicht berücksichtigt

MySQL ist möglicherweise die am häufigsten verwendete Datenbank in PHP , aber es ist auch nicht die einzige Option. PostgreSQL und Firebird sind ebenfalls Konkurrenten. Sie sind beide Open Source und werden nicht von bestimmten Unternehmen kontrolliert. Microsoft bietet SQL Server Express an, Oracle verfügt über 10g Express und für diese Unternehmensversionen gibt es auch kostenlose Versionen. SQLite ist auch eine gute Wahl für einige kleine oder eingebettete Anwendungen.

Zusammenfassung

Das obige ist der detaillierte Inhalt vonZusammenfassung von 11 häufigen Fehlern bei MySQL-Aufrufen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn