Maison >Tutoriel CMS >WordPresse >Travailler avec des bases de données dans WordPress
Guide d'interaction de la base de données WordPress: Master wpdb
Class and Database Operation Skills
WordPress est livré avec un grand nombre de fonctions d'interaction de base de données. Cependant, surtout lorsque vous traitez des tables personnalisées, nous devons parfois faire des choses qui ne peuvent pas être réalisées par les fonctionnalités natives de WordPress. WP_Query
wp_insert_post
update_post_meta
get_posts
et partagera quelques conseils de développement. Nous couvrirons les fonctions utilisées pour créer des tables personnalisées, mais ne couvrirons pas les bases de la création d'une base de données WordPress initiale.
wpdb
Points clés: dbDelta
WordPress fournit une variété de fonctions d'interaction de base de données, y compris les classes et les fonctions connexes. Mais pour des besoins plus complexes, les développeurs peuvent utiliser des classes
ou créer des tables personnalisées.WP_Query
est un outil clé pour gérer directement les bases de données WordPress. Pour éviter les noms de table à code dur dans les requêtes SQL, utilisez l'attribut wpdb
fourni par WordPress pour améliorer la portabilité du code. wpdb
fournit également des méthodes auxiliaires pour les opérations de base de données, telles que prefix
, wpdb
. insert
update
Pour empêcher l'injection SQL, la classe get_row
fournit une méthode query
qui reçoit des chaînes de relevé SQL et des données qui doivent être échappées. Ceci est particulièrement important lorsque vous traitez de méthodes telles que wpdb
prepare
La création de tables personnalisées est utile lorsque un contrôle plus granulaire des données est requis. Il est recommandé d'utiliser la fonction query
pour créer des tables de base de données personnalisées et des mises à jour de schéma de table de processus. Pendant ce temps, stockez la version de la base de données dans le tableau get_results
pour référence lors des futures mises à jour. dbDelta
options
Utilisation de
La classe wpdb
est la classe la plus couramment utilisée lors du traitement des bases de données directement. Le manuel WordPress a expliqué les méthodes et propriétés de base de la classe en détail, et ne sera pas répétée ici. Nous nous concentrerons sur certaines des erreurs courantes que les développeurs WordPress font, comment les corriger et les meilleures pratiques lors de l'utilisation de classes
wpdb
wpdb
Évitez les noms de table du code dur dans les requêtes SQL wpdb
Certains développeurs supposent que le préfixe de table ne changera pas et n'utilisera pas la valeur par défaut . L'extrait de code suivant montre la mauvaise approche:
Si l'utilisateur modifie la préfixe de la table en une autre valeur, ce code est erroné. Ce problème peut être facilement résolu en utilisant l'attribut wp_
:
<code class="language-php">global $wpdb; $result = $wpdb->get_results('SELECT * FROM wp_posts LIMIT 10');</code>
Mieux encore, si vous avez affaire aux tables par défaut WordPress, vous pouvez y accéder directement en utilisant les propriétés dans wpdb
. Chaque table par défaut WordPress est représentée par une propriété du même nom dans la classe wpdb
(à l'exclusion des préfixes). Par exemple, supposons que le préfixe de table soit wp_
:
$wpdb->posts
correspondant à wp_posts
table $wpdb->postmeta
correspondant à wp_postmeta
table $wpdb->users
correspondant à wp_users
table Par conséquent, le code ci-dessus peut être encore amélioré:
<code class="language-php">global $wpdb; $result = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10');</code>
Utiliser des méthodes auxiliaires spécifiques pour les opérations de base de données
Bien que la méthode query
puisse gérer n'importe quelle requête SQL, il est préférable d'utiliser des méthodes auxiliaires plus appropriées, telles que insert
, update
, get_row
, etc. Ces méthodes sont plus spécifiques et plus sûres, car les évasions et d'autres travaux sous-jacents sont déjà gérés par eux.
Déboguez correctement la requête de la base de données
Par défaut, les rapports d'erreur sont désactivés. wpdb
fournit deux façons de changer l'état des rapports d'erreur: $wpdb->show_errors();
(on) et $wpdb->hide_errors();
(off). Si les deux WP_DEBUG
et WP_DEBUG_DISPLAY
sont définis sur true
, la méthode show_errors
est automatiquement appelée. La méthode $wpdb->print_error();
affichera les erreurs de la dernière requête quel que soit l'état du rapport d'erreur. Activer wp-config.php
dans SAVEQUERIES
pour stocker toutes les requêtes de base de données, le temps d'exécution et les emplacements d'appel dans l'attribut wpdb
de la classe queries
. Ces données peuvent être récupérées à l'aide de print_r( $wpdb->queries );
. Notez que cela affecte les performances du site Web et n'est donc utilisé que si nécessaire.
Protéger les requêtes des attaques potentielles
pour protéger complètement le code des attaques d'injection SQL, wpdb
fournit également une méthode prepare
qui reçoit des chaînes de relevé SQL et des données qui doivent être échappées. Ceci est très important lorsqu'il s'agit de méthodes telles que query
ou get_results
.
<code class="language-php">global $wpdb; $result = $wpdb->get_results('SELECT * FROM ' . $wpdb->posts . ' LIMIT 10');</code>La méthode
prepare
prend en charge deux syntaxes: sprintf
et vsprintf
.
Connectez-vous à une base de données distincte
Par défaut, la variable $wpdb
est une instance de la classe wpdb
, connectée à la base de données WordPress définie dans wp-config.php
. Si vous souhaitez interagir avec une autre base de données, vous pouvez instancier une autre instance de classe wpdb
. Le constructeur de la classe wpdb
accepte quatre paramètres: nom d'utilisateur, mot de passe, nom de base de données et hôte de base de données.
<code class="language-php">$wpdb->prepare( $sql, $format... );</code>
Si le nom d'utilisateur, le mot de passe et l'hôte de la base de données sont les mêmes, modifiez simplement la base de données sélectionnée et utilisez la méthode $wpdb
sur la variable select
.
<code class="language-php">$mydb = new wpdb( 'username', 'password', 'my_database', 'localhost' );</code>
Utilisez des tables de base de données personnalisées
Les tables par défaut WordPress sont généralement suffisantes pour gérer la plupart des opérations complexes. Avec les types d'articles personnalisés, les métadonnées d'articles, la taxonomie personnalisée et les métadonnées à terme, vous pouvez faire presque n'importe quoi sans utiliser de tables personnalisées. Cependant, les tables personnalisées peuvent être utiles lorsque un contrôle plus granulaire sur les données traités par le plugin. Les avantages des tables personnalisées comprennent: un contrôle complet sur les structures de données, la séparation des préoccupations et l'efficacité.
en utilisant dbDelta
pour gérer toutes les mises à jour initiales de création de table et de schéma de table. Le Core WordPress utilise également cette fonction pour gérer les mises à jour du schéma de base de données entre les versions. dbDelta
<code class="language-php">global $wpdb; $result = $wpdb->get_results('SELECT * FROM wp_posts LIMIT 10');</code>pour vérifier la version de la base de données et mettre à jour le schéma de table si nécessaire.
plugin_loaded
WordPress ne se limite pas à la création de sites Web simples, il évolue rapidement vers un cadre d'application entièrement fonctionnel. L'extension WordPress devrait hiérarchiser les types de postes personnalisés et la taxonomie personnalisée. Cependant, lorsque un contrôle plus granulaire des données est nécessaire, les fonctions et les classes telles que
sont très importantes.
wpdb
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!