Kann ich PHP-SQL-functionen anstelle von $ wpdb verwenden?

Ich bin neu in WordPress und habe mich gefragt, warum in der WordPress-API sagen Sie, dass Sie functionen wie prepare() , insert() , get_col() , get_row() , query() usw. verwenden, wenn ich technisch kann integrierte PHP-SQL-functionen wie mysqli_query() , mysqli_fetch_assoc() usw.

Was genau sind die Vorteile der $wpdb SQL-functionen zum Ausführen von Abfragen?

Solutions Collecting From Web of "Kann ich PHP-SQL-functionen anstelle von $ wpdb verwenden?"

Es gibt ein paar verschiedene Gründe.

1. Trennung von Anliegen

Grundsätzlich sollte Ihr logischer Code (dh Ihr Plugin oder Ihr Thema) nichts über die database wissen müssen. Überhaupt. Ja wirklich.

Das $wpdb Objekt ist der globale databasezugriffs-Layer, den Sie für den gesamten databasezugriff verwenden sollten. Wenn Sie eine benutzerdefinierte Abfrage ausführen müssen (angenommen, Sie haben eine benutzerdefinierte Tabelle), sollten Sie $wpdb->prepare() und $wpdb->query() , um Ihre Abfragen vorzubereiten und Daten von der database abzurufen.

2. Sicherheit

Es ist sehr leicht zu vergessen, eine Abfrage zu bereinigen und Ihre Site für eine Art SQL-Injection-Angriff zu öffnen. Die Verwendung der integrierten Hygienemethoden von WordPress ist eine Möglichkeit, dies zu verhindern. Es ist nicht perfekt (Sie könnten immer noch eine wirklich schlechte Frage schreiben), aber es hilft definitiv.

3. performance

Die in die WordPress-API integrierten Abfragen wurden von mehreren Entwicklern übersprungen und optimiert, um mit dem kleinsten Speicherbedarf zu arbeiten und so schnell wie möglich zurückzukehren. Darüber hinaus sind einige dieser API-Aufrufe selbst zwischenspeichernd, sodass Sie nach Daten suchen können, die sich nicht geändert haben und sich bereits im Speicher befinden. Dies ist ein großer performancesvorteil gegenüber einem direkten SQL-Aufruf.

Und mit jeder neuen Version von WordPress machen wir Änderungen, um die Dinge schneller und wendiger zu machen.

4. Flexibilität und Stabilität

Die database ist kein festes Konstrukt. Das Tabellenschema kann und wird sich ändern. Das mühelose Codieren von WordPress-Objekten in Ihrem eigenen Code ist ein unflexibler Wartungsalarm. Wenn eine neue Version von WP gelöscht wird, müssen Sie Ihre Abfragen erneut überschreiben … und sich dadurch wieder potenziellen Sicherheitslücken (# 2) öffnen oder die performance Ihrer Website negativ beeinflussen (# 3).

Die Quintessenz

Alles von PHP steht Ihnen weiterhin zur Verfügung. Sie können direkte Verbindungen zu der von Ihnen benötigten database herstellen und beliebige Abfragen ausführen. Aber WordPress hat bereits (in der Mehrzahl der Fälle) die schweren Aufgaben erledigt und diese Anrufe für Sie abstrahiert.

Der Vorteil der Verwendung von $wpdb ist, dass es bereits vorhanden ist, von mehreren Entwicklern gepflegt wird und gut dokumentiert ist. Sie müssen das Rad nicht neu erfinden. Und wenn WordPress sich ändert, wird sich das für dich ändern.

Ja, Sie können die SQL-functionen von PHP in WordPress verwenden. WordPress ist in PHP geschrieben, so dass alle PHP-functionen in Plugins verfügbar sind.

Um Ihre zweite Frage zu beantworten, sind die Vorteile von wpdb Komfort und Sicherheit. Die wpdb Bibliothek ist eine databaseabstraktionsschicht, die eine wpdb nützlicher functionen bietet. Wenn Sie beispielsweise die functionen wpdb-> insert () und wpdb-> update () verwenden, schreiben Sie kein SQL, und Sie müssen sich nicht darum kümmern, den Inhalt von Variablen zu umgehen ( die wpdb-Dokumentation für wpdb-> update () sagt, dass sie uncapsular sein sollten).

Update : Es sollte beachtet werden, dass wpdb SQL-Abfragen in functionen wie select() nicht entkommt. Lesen Sie den DB-Abschnitt des Data Validation- Artikels für weitere Informationen.

Um auf die Antwort von fdsa näher einzugehen, verfügt wpdb über ein eingebautes Caching sowie eine Abfrageoptimierung.

wpdb bietet auch praktische Variablen für die Namen von databasetabellen. Dies ist äußerst nützlich beim Codieren für eine Netzwerk- / Multisite-Umgebung.

Als Referenz: classnreferenz / wpdb in den offiziellen Dokumenten.