Heim  >  Artikel  >  Datenbank  >  Ein Muss! 10 MySQL-Fehler, die PHP-Entwickler machen

Ein Muss! 10 MySQL-Fehler, die PHP-Entwickler machen

silencement
silencementnach vorne
2020-01-23 22:18:331730Durchsuche

Ein Muss! 10 MySQL-Fehler, die PHP-Entwickler 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ü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 ein großes Problem bei der zukünftigen Erweiterungsleistung darstellt.

Die Lösung ist einfach: Verwenden Sie InnoDB. Aber hier versuche ich im Allgemeinen MyISAM

2. Verwenden Sie die MySQL-Methode von PHP

PHP hat die MySQL-Funktionsbibliothek von Anfang an 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 nach 4.1.3 ist, wird die Verwendung dringend empfohlen die MySQLi-Erweiterung.

mysqli oder die erweiterte Erweiterung von MySQL hat einige Vorteile:

verfügt über eine objektorientierte Schnittstelle

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

Unterstützt mehrere Anweisungen und Transaktionen

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

3. Benutzereingaben nicht filtern

Es sollte sein: Vertrauen Sie niemals Benutzereingaben. Verwenden Sie Back-End-PHP, um alle Eingabeinformationen zu überprüfen und zu filtern. Vertrauen Sie Javascript nicht. 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 Administrator anmelden, ohne ein Passwort einzugeben. 4. Verwenden Sie kein UTF-8

Benutzer im Vereinigten Königreich und in den Vereinigten Staaten berücksichtigen selten Sprachprobleme, was dazu führt, 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 dort, wo SQL verwendet werden sollte


Wenn Sie neu bei MySQL sind, sollten Sie bei der Lösung von Problemen manchmal darüber nachdenken, es zuerst zu verwenden Gelöst in einer Sprache, 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-AVG()-Methode verwendet, sondern PHP wird verwendet, um alle Werte zu durchlaufen und sie dann zu akkumulieren, um den Durchschnitt zu berechnen.

Achten Sie auch auf PHP-Schleifen in SQL-Abfragen. Oftmals ist es effizienter, PHP zu durchlaufen, nachdem alle Ergebnisse vorliegen.

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

6. Nicht optimierte Abfragen


99 % der PHP-Leistungsprobleme werden durch die Datenbank verursacht langsam. Die EXPLAIN-Anweisung von MySQL, der Query

Profiler und viele andere Tools können Ihnen dabei helfen, diese unanständigen SELECTs zu finden.

7. Verwendung falscher Datentypen

MySQL bietet eine Reihe von Datentypen wie Zahlen, Zeichenfolgen, 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, um beispielsweise Zeichenfolgen zum Speichern serialisierter PHP-Objekte zu verwenden. Es mag einfach sein, eine Datenbank hinzuzufügen, aber dann wird MySQL unhandlich und kann in Zukunft Probleme verursachen.

8. Verwenden Sie *

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

9. Unterindizierung oder Überindizierung

Im Allgemeinen sollten alle Felder, die nach WHERE in der SELECT-Anweisung 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. Durch die Indizierung kann MySQL E-Mails mithilfe von Suchalgorithmen 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 groß ist

, wird es Leistungsprobleme geben. Indizieren Sie daher nur die erforderlichen Felder.

10. Keine Sicherung

Es kommt vielleicht nicht oft vor, aber Datenbankschäden, Festplattenfehler, Dienstabschaltung usw. können eine Katastrophe verursachen die Daten der Zerstörung. Stellen Sie daher sicher, dass Sie Ihre Daten automatisch sichern oder

oder eine Kopie speichern.

Das obige ist der detaillierte Inhalt vonEin Muss! 10 MySQL-Fehler, die PHP-Entwickler machen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:www.liqingbo.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen