Talen: engels • Nederlands • 日本語 Русский • 中文(简体) • 中文(繁體) • 한국어 • (Voeg uw taal)
Praten met de Database: de wpdb-Klasse
WordPress definieert een klasse met de naam wpdb, die bevat een set van functies die worden gebruikt om te communiceren met een database. Het primaire doel is om een interface met de WordPress-database te bieden, maar kan worden gebruikt om te communiceren met een andere geschikte database. De class source code is losjes gebaseerd op de ezSQL klasse; geschreven en onderhouden door Justin Vincent
met behulp van het $ wpdb Object
waarschuwing: methoden in de wpdb()
klasse moeten niet direct aangeroepen worden. Gebruik in plaats daarvan het globale $wpdb
object!
WordPress biedt een globale objectvariabele, $wpdb
, die een instantiatie is van de wpdb-klasse gedefinieerd in /wp-includes/wp-db.php. Standaard wordt $wpdb
geïnstalleerd om met de WordPress-database te praten. Om toegang te krijgen tot $wpdb
in uw WordPress PHP code, declareer $wpdb
als een globale variabele met behulp van de global keyword
, of gebruik de superglobal $GLOBALS
op de volgende manier:
// 1st Method - Declaring $wpdb as global and using it to execute an SQL query statement that returns a PHP objectglobal $wpdb;$results = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}options WHERE option_id = 1", OBJECT );// 2nd Method - Utilizing the $GLOBALS superglobal. Does not require global keyword ( but may not be best practice )$results = $GLOBALS->get_results( "SELECT * FROM {$wpdb->prefix}options WHERE option_id = 1", OBJECT );
het $wpdb
– object is niet beperkt tot de standaardtabellen die door WordPress zijn gemaakt; het kan worden gebruikt om gegevens uit elke tabel in de WordPress-database te lezen (zoals aangepaste plug-intabellen). Bijvoorbeeld om wat informatie te selecteren uit een aangepaste tabel genaamd “mytable”, kunt u het volgende doen.
$myrows = $wpdb->get_results( "SELECT id, name FROM mytable" );
het $wpdb
object kan met een willekeurig aantal tabellen praten, maar slechts met één database tegelijk; standaard de WordPress database. In het zeldzame geval dat u verbinding moet maken met een andere database, moet u uw eigen object uit de wpdb
klasse instantiate met uw eigen database verbindingsinformatie. Voor extreem ingewikkelde opstellingen met veel databases, overwegen het gebruik van hyperdb in plaats daarvan.
een waarschuwing
sommige functies in deze klasse nemen een SQL-statement als invoer. U moet SQL ontsnappen aan alle niet-vertrouwde waarden die u opneemt in de SQL-query om SQL-injectieaanvallen te voorkomen. Controleer de documentatie om te zien of de functie die je van plan bent te gebruiken escapes SQL voor je is of verwacht dat het pre-escaped is.
voor meer informatie over SQL-escaping in WordPress, zie de paragraaf getiteld Protect Queries Against SQL Injection Attacks hieronder.
selecteer een variabele
de functie get_var
geeft een enkele variabele uit de database terug. Hoewel er slechts één variabele wordt geretourneerd, wordt het volledige resultaat van de query gecached voor later gebruik. Geeft NULL terug als er geen resultaat is gevonden.
<?php $wpdb->get_var( 'query', column_offset, row_offset ); ?>
query (string) de query die u wilt uitvoeren. Als u deze parameter instelt opnull
, wordt de opgegeven variabele geretourneerd uit de resultaten van de vorige query in de cache. column_offset (integer) de gewenste kolom (0 is de eerste). Standaard 0. row_offset (integer) de gewenste rij (0 is de eerste). Standaard 0.
voorbeelden
het aantal gebruikers ophalen en weergeven.
<?php$user_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->users" );echo "<p>User count is {$user_count}</p>";?>
de som van een aangepaste veldwaarde ophalen en weergeven.
<?php// set the meta_key to the appropriate custom field meta key$meta_key = 'miles';$allmiles = $wpdb->get_var( $wpdb->prepare( "SELECT sum(meta_value) FROM $wpdb->postmeta WHERE meta_key = %s", $meta_key) );echo "<p>Total miles is {$allmiles}</p>";?>
selecteer een Rij
om een hele rij uit een query op te halen, gebruikt u get_row
. De functie kan de rij retourneren als een object, een associatieve array, of als een numeriek geïndexeerde array. Als er meer dan één rij wordt geretourneerd door de query, wordt alleen de opgegeven rij geretourneerd door de functie, maar alle rijen worden gecached voor later gebruik. Geeft NULL terug als er geen resultaat wordt gevonden, overweeg dit dan bij het gebruik van de geretourneerde waarde in argumenten, zie voorbeeld hieronder.
<?php $wpdb->get_row('query', output_type, row_offset); ?>
query (string) de query die u wilt uitvoeren. output_type een van de drie vooraf gedefinieerde constanten. Standaard op bezwaar.
- OBJECT-resultaat wordt uitgevoerd als een object.
- ARRAY_A-resultaat wordt uitgevoerd als een associatieve array.
- ARRAY_N-resultaat zal worden uitgevoerd als een numeriek geïndexeerde array.
row_offset (integer) de gewenste rij (0 is de eerste). Standaard 0.
voorbeelden
krijgen alle informatie over Link 10.
$mylink = $wpdb->get_row( "SELECT * FROM $wpdb->links WHERE link_id = 10" );
de eigenschappen van het $mylink
object zijn de kolomnamen van het resultaat van de SQL-query (in dit voorbeeld alle kolommen uit de $wpdb->links
tabel, maar u kunt ook alleen specifieke kolommen opvragen).
echo $mylink->link_id; // prints "10"
daarentegen zou het gebruik van
$mylink = $wpdb->get_row( "SELECT * FROM $wpdb->links WHERE link_id = 10", ARRAY_A );
resulteren in een associatieve array:
echo $mylink; // prints "10"
en
$mylink = $wpdb->get_row( "SELECT * FROM $wpdb->links WHERE link_id = 10", ARRAY_N );
zou resulteren in een numeriek geïndexeerde array:
echo $mylink; // prints "10"
als er geen record is met ID 10 in de linkstabel, wordt null
geretourneerd. Het volgende zou dan onwaar zijn:
if ( null !== $mylink ) { // do something with the link return true;} else { // no link found return false;}
selecteer een kolom
gebruik get_col
om een kolom te selecteren. Deze functie voert een eendimensionale array uit. Als er meer dan één kolom wordt geretourneerd door de query, wordt alleen de opgegeven kolom geretourneerd door de functie, maar het volledige resultaat wordt gecached voor later gebruik. Geeft een lege array terug als er geen resultaat is gevonden.
<?php $wpdb->get_col( 'query', column_offset ); ?>
query (string) de query die u wilt uitvoeren. Als u deze parameter instelt opnull
, wordt de opgegeven kolom geretourneerd uit de resultaten van de vorige query in de cache. column_offset (integer) de gewenste kolom (0 is de eerste). Standaard 0.
voorbeelden
in dit voorbeeld wordt aangenomen dat de blog is gewijd aan informatie over auto ‘ s. Elke post beschrijft een bepaalde auto (bijvoorbeeld 1969 Ford Mustang), en drie aangepaste velden, fabrikant, model, en jaar, worden toegewezen aan elke post. Dit voorbeeld toont de post titels, gefilterd door een bepaalde fabrikant (Ford), en gesorteerd op model en jaar.
de get_col-vorm van de Wpdb-klasse wordt gebruikt om een array te retourneren van alle post-ID ‘ s die aan de criteria voldoen en in de juiste volgorde gesorteerd zijn. Dan wordt een foreach construct gebruikt om door dat array van post-ID ‘ s te herhalen, waarbij de titel van elke post wordt weergegeven. Merk op dat de SQL voor dit voorbeeld is gemaakt door Andomar.
<?php $meta_key1= 'model';$meta_key2= 'year';$meta_key3= 'manufacturer';$meta_key3_value= 'Ford';$postids=$wpdb->get_col( $wpdb->prepare( "SELECT key3.post_idFROM $wpdb->postmeta key3INNER JOIN $wpdb->postmeta key1 ON key1.post_id = key3.post_id AND key1.meta_key = %s INNER JOIN $wpdb->postmeta key2 ON key2.post_id = key3.post_id AND key2.meta_key = %sWHERE key3.meta_key = %s AND key3.meta_value = %sORDER BY key1.meta_value, key2.meta_value",$meta_key1, $meta_key2, $meta_key3, $meta_key3_value) ); if ( $postids ) {echo "List of {$meta_key3_value}(s), sorted by {$meta_key1}, {$meta_key2}";foreach ( $postids as $id ) { $post = get_post( intval( $id ) );setup_postdata( $post );?><p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p><?php} }?>
dit voorbeeld toont alle berichten die een bepaald aangepast veld bevatten, maar gesorteerd op de waarde van een tweede aangepast veld.
<?php// List all posts with custom field Color, sorted by the value of custom field Display_Order// does not exclude any 'post_type'// assumes each post has just one custom field for Color, and one for Display_Order$meta_key1 = 'Color';$meta_key2 = 'Display_Order';$postids = $wpdb->get_col( $wpdb->prepare( "SELECT key1.post_idFROM $wpdb->postmeta key1INNER JOIN $wpdb->postmeta key2 ON key2.post_id = key1.post_id AND key2.meta_key = %sWHERE key1.meta_key = %sORDER BY key2.meta_value+(0) ASC", $meta_key2,$meta_key1) ); if ( $postids ) {echo "List of {$meta_key1} posts, sorted by {$meta_key2}";foreach ( $postids as $id ) {$post = get_post( intval( $id ) );setup_postdata( $post );?><p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p><?php}}?>
Selecteer Generieke resultaten
generiek, resultaten met meerdere rijen kunnen uit de database worden gehaald met get_results
. De functie retourneert het volledige query resultaat als een array. Elk element van deze array komt overeen met één rij van het queryresultaat en kan, zoals get_row
, een object, een associatieve array of een genummerde array zijn. Als er geen overeenkomende rijen worden gevonden, of als er een databasefout is, is de retourwaarde een lege array. Als uw $ query string leeg is, of als u een ongeldige $output_type passeert, zal NULL worden geretourneerd.
<?php $wpdb->get_results( 'query', output_type ); ?>
query (string) de query die u wilt uitvoeren. output_type een van de vier vooraf gedefinieerde constanten. Standaard op bezwaar. Zie een rij en de bijbehorende voorbeelden selecteren voor meer informatie.
- OBJECT-resultaat wordt uitgevoerd als een numeriek geïndexeerde array van rijobjecten.
- OBJECT_K-resultaat wordt uitgevoerd als een associatieve array van rijobjecten, waarbij de waarden van de eerste kolom als sleutels worden gebruikt (duplicaten worden verworpen).
- ARRAY_A-resultaat wordt uitgevoerd als een numeriek geïndexeerde array van associatieve arrays, met kolomnamen als sleutels.
- ARRAY_N-resultaat zal worden uitgevoerd als een numeriek geïndexeerde array van numeriek geïndexeerde arrays.
omdat deze functie de $wpdb->query() functie gebruikt, zijn alle klassenvariabelen correct ingesteld. De resultaten tellen voor een’ SELECT ‘ query zal worden opgeslagen in $wpdb – >num_rows.
voorbeelden
krijgen de ID ‘ s en titels van alle concepten door Gebruiker 5 en echo de titels.
$fivesdrafts = $wpdb->get_results( "SELECT ID, post_title FROM $wpdb->postsWHERE post_status = 'draft' AND post_author = 5");foreach ( $fivesdrafts as $fivesdraft ) {echo $fivesdraft->post_title;}
verkrijg alle informatie over de concepten door Gebruiker 5.
<?php$fivesdrafts = $wpdb->get_results( "SELECT * FROM $wpdb->postsWHERE post_status = 'draft' AND post_author = 5");if ( $fivesdrafts ){foreach ( $fivesdrafts as $post ){setup_postdata( $post );?><h2><a href="<?php the_permalink(); ?>" rel="bookmark" title="Permalink: <?php the_title(); ?>"><?php the_title(); ?></a></h2><?php}}else{?><h2>Not Found</h2><?php}?>
rij
rij in een tabel invoegen.
<?php $wpdb->insert( $table, $data, $format ); ?>
table (string) de naam van de tabel waarin gegevens moeten worden ingevoegd. gegevens (array) in te voegen gegevens (in kolom => waardeparen). Zowel $ data kolommen als $data waarden zouden “raw” moeten zijn (geen van beide zou SQL escaped moeten zijn). format (array / string) (optioneel) een array van formaten die moeten worden toegewezen aan elk van de waarden in $data. Als string, dat formaat zal worden gebruikt voor alle waarden in $data. Indien weggelaten, zullen alle waarden in $data behandeld worden als strings tenzij anders aangegeven in wpdb::$field_types.
mogelijke opmaakwaarden: % s als tekenreeks; % d als geheel getal; en % f als float. (Zie hieronder voor meer informatie.)
na invoegen kan het ID gegenereerd voor de AUTO_INCREMENT kolom worden benaderd met:
$wpdb->insert_id
deze functie retourneert false als de rij niet kon worden ingevoegd. Anders retourneert het het aantal betrokken rijen (dat altijd 1 zal zijn).
let op: het waardegedeelte van de kolom van de gegevensparameter=>waardeparen moeten scalair zijn. Als je een array (of object) doorgeeft als een waarde die moet worden ingevoegd, zal je een waarschuwing genereren die vergelijkbaar is met “mysql_real_escape_string() verwacht dat parameter 1 string is, array gegeven op Regel 880 in bestand /var/www/html/wp-includes/wp-db.php”.
voorbeelden
twee kolommen op een Rij invoegen, waarbij de eerste waarde een tekenreeks is en de tweede een getal:
$wpdb->insert( 'table', array( 'column1' => 'value1', 'column2' => 123 ), array( '%s', '%d' ) );
vervang rij
Vervang een rij in een tabel als deze bestaat of voeg een nieuwe rij in een tabel in als de rij nog niet bestond.
<?php $wpdb->replace( $table, $data, $format ); ?>
table (string) de naam van de tabel om gegevens in te vervangen. data (array) Data te vervangen (in kolom = > waardeparen). Zowel $ data kolommen als $data waarden zouden “raw” moeten zijn (geen van beide zou SQL escaped moeten zijn). format (array / string) (optioneel) een array van formaten die moeten worden toegewezen aan elk van de waarde in $data. Als string, dat formaat zal worden gebruikt voor alle waarden in $data. Indien weggelaten, zullen alle waarden in $data behandeld worden als strings tenzij anders aangegeven in wpdb::$field_types.
mogelijke opmaakwaarden: % s als tekenreeks; % d als geheel getal; en % f als float. (Zie hieronder voor meer informatie.)
als de lengte van een string element in de $data array parameter langer is dan de gedefinieerde lengte in de MySQL database tabel, zal de insert mislukken, deze functie zal false retourneren, maar $wpdb->last_error zal niet worden ingesteld op een beschrijvend bericht. U moet ervoor zorgen dat de gegevens die u wilt invoegen in de database passen – neem niet aan dat de MySQL de gegevens zal afkappen.
na vervangen kan het ID gegenereerd voor de kolom AUTO_INCREMENT worden benaderd met:
$wpdb->insert_id
deze functie retourneert een telling om het aantal betrokken rijen aan te geven. Dit is de som van de rijen die zijn verwijderd en ingevoegd. Als de telling 1 is voor een enkele rij vervangen, is een rij ingevoegd en zijn geen rijen verwijderd. Als de telling groter is dan 1, zijn een of meer oude rijen verwijderd voordat de nieuwe rij werd ingevoegd. Het is mogelijk dat één enkele rij meer dan één oude rij vervangt als de tabel meerdere unieke indexen bevat en de nieuwe rij waarden dupliceert voor verschillende oude rijen in verschillende unieke indexen.
deze functie geeft false terug als een bestaande rij niet kon worden vervangen en een nieuwe rij niet kon worden ingevoegd.
voorbeelden
een Rij vervangen, waarbij de eerste waarde de rij-id, de tweede een tekenreeks en het derde een getal is:
$wpdb->replace( 'table', array( 'indexed_id' => 1,'column1' => 'value1', 'column2' => 123 ), array( '%d','%s', '%d' ) );
rij
rij in de tabel bijwerken. Geeft false terug als er fouten zijn gemaakt, of het aantal betrokken rijen als het is gelukt.
<?php $wpdb->update( $table, $data, $where, $format = null, $where_format = null ); ?>
table (string) de naam van de bij te werken tabel. gegevens (array) bij te werken gegevens (in kolom => waardeparen). Zowel $ data kolommen als $data waarden zouden “raw” moeten zijn (geen van beide zou SQL escaped moeten zijn). Dit betekent dat als je GET of POST data gebruikt je stripslashes() moet gebruiken om te voorkomen dat slashes in de database terechtkomen. where (array) een benoemde array van Where-clausules (in kolom => waardeparen). Meerdere clausules zullen worden samengevoegd met ANDs. Zowel $where kolommen als $where waarden zouden “raw”moeten zijn. format (array / string) (optioneel) een array van formaten die moeten worden toegewezen aan elk van de waarden in $data. Als string, dat formaat zal worden gebruikt voor alle waarden in $data. where_format (array / string) (optioneel) een array van formaten die moeten worden toegewezen aan elk van de waarden in $where. Als string, dat formaat zal worden gebruikt voor alle items in $where.
mogelijke opmaakwaarden: % s als tekenreeks; % d als geheel getal en % f als float. (Zie hieronder voor meer informatie.) Indien weggelaten, worden alle waarden in $waar behandeld als strings.
retourwaarden: Deze functie retourneert het aantal bijgewerkte rijen, of false als er een fout is. Houd er rekening mee dat als de $data overeenkomt met wat al in de database staat, er geen rijen zullen worden bijgewerkt, dus 0 zal worden geretourneerd. Daarom moet u de return waarschijnlijk controleren met false = = = $ result
Examples
een Rij bijwerken, waarbij de ID 1 is, de waarde in de eerste kolom een tekenreeks is en de waarde in de tweede kolom een getal is:
$wpdb->update( 'table', array( 'column1' => 'value1',// string'column2' => 'value2'// integer (number) ), array( 'ID' => 1 ), array( '%s',// value1'%d'// value2), array( '%d' ) );
let op: %d
kan niet omgaan met kommawaarden – als u geen volledige getallen gebruikt, gebruik dan string/%s.
Rijen verwijderen
de functie verwijderen is toegevoegd in WordPress 3.4.0, en kan worden gebruikt om rijen uit een tabel te verwijderen. Het gebruik is zeer vergelijkbaar met bijwerken en invoegen. Het retourneert het aantal rijen bijgewerkt, of false bij fout.
gebruik
<?php $wpdb->delete( $table, $where, $where_format = null ); ?>
Parameters
$ table (string) (required) tabelnaam. Standaard: None $where (array) (required) een benoemde array van WHERE-clausules (in kolom – > waardeparen). Meerdere clausules zullen worden samengevoegd met ANDs. Zowel $where kolommen als $where waarden moeten ‘raw’zijn. Standaard: Geen $where_format (string / array) (optioneel) een array van formaten die moeten worden toegewezen aan elk van de waarden in $where. Als een string, dat formaat zal worden gebruikt voor alle items in $where. Een opmaak is een van ‘% d’, ‘%f’, ‘%S ‘ (integer, float, string; zie hieronder voor meer informatie). Indien weggelaten, worden alle waarden in $where behandeld als strings tenzij anders aangegeven in wpdb::$field_types. Standaard: null
voorbeelden
// Default usage.$wpdb->delete( 'table', array( 'ID' => 1 ) );// Using where formatting.$wpdb->delete( 'table', array( 'ID' => 1 ), array( '%d' ) );
uitvoeren van algemene query ‘ s
met de functie query
kunt u elke SQL query in de WordPress-database uitvoeren. Het wordt het beste gebruikt wanneer er behoefte is aan specifieke, aangepaste of anderszins complexe SQL-query ‘ s. Voor meer basisvragen, zoals het selecteren van informatie uit een tabel, zie de andere wpdb
functies hierboven, zoals get_results, get_var, get_row or get_col
.
algemene syntaxis
<?php $wpdb->query('query'); ?>
query (string) de SQL query die u wilt uitvoeren.
deze functie geeft een gehele waarde aan die het aantal betrokken/geselecteerde rijen aangeeft voor selecteren, invoegen, verwijderen, bijwerken, enz. Voor CREATE, ALTER, TRUNCATE and DROP SQL statements (die hele tabellen beïnvloeden in plaats van specifieke rijen) geeft deze functie TRUE
terug bij succes. Als er een MySQL-fout wordt aangetroffen, geeft de functie FALSE
terug. Merk op dat aangezien zowel 0 als FALSE
kunnen worden geretourneerd voor rij query ‘ s, moet u voorzichtig zijn bij het controleren van de retourwaarde. Gebruik de identity operator ( = = = ) om te controleren op fouten (bijvoorbeeld false === $result), en of er rijen werden beïnvloed (bijvoorbeeld 0 === $result).
voorbeelden
verwijder de’ gorgle ‘ meta key en waarde uit Post 13. (We voegen de ‘prepare’ methode toe om er zeker van te zijn dat we niet te maken hebben met een illegale operatie of illegale karakters):
$wpdb->query( $wpdb->prepare( " DELETE FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s", 13, 'gargle' ));
uitgevoerd in WordPress door delete_post_meta()
.
stel de ouder van pagina 15 in op Pagina 7.
$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_parent = %dWHERE ID = %dAND post_status = %s", 7, 15, 'static') );
Bescherm Queries tegen SQL-injectieaanvallen
voor een completer overzicht van SQL-escaping in WordPress, zie database Data Validation. Het is een must-read voor alle WordPress code bijdragers en Plugin auteurs.
alle gegevens in SQL-queries moeten SQL-escaped zijn voordat de SQL-query wordt uitgevoerd om aanvallen met SQL-injectie te voorkomen. De prepare
methode voert deze functionaliteit uit voor WordPress, die zowel een sprintf()-achtige als vsprintf()-achtige syntaxis ondersteunt.
let op: vanaf 3.5, wpdb::prepare () dwingt minimaal 2 argumenten af.
<?php $sql = $wpdb->prepare( 'query' , value_parameter ); ?>
query (string) de SQL query die u wilt uitvoeren, met placeholders (zie hieronder). value_parameter (int|string / array) de waarde die in de plaatshouder moet worden vervangen. Veel waarden kunnen worden doorgegeven door simpelweg meer argumenten door te geven op een sprintf()-achtige manier. Als alternatief kan het tweede argument een array zijn die de waarden bevat zoals in PHP ‘ s vsprintf() functie. Er moet op worden gelet dat directe gebruikersinvoer naar deze parameter niet wordt toegestaan, wat array manipulatie van elke query met meerdere placeholders mogelijk zou maken. Waarden kunnen niet sql-escaped zijn.
Placeholders
de query parameter voor prepare accepteert sprintf () – achtige placeholders. De formaten %s (string), %d (integer) en % f (float) worden ondersteund. (De plaatsaanduidingen %s en % d zijn beschikbaar sinds de functie is toegevoegd aan core in versie 2.3, %f is alleen beschikbaar sinds Versie 3.3.) Alle andere %
tekens kunnen parseerfouten veroorzaken, tenzij ze zijn ontsnapt. Alle %
tekens in SQL string literals, inclusief wildcards, moeten dubbel – % escaped zijn als %%
. Alle %d, % f en %s moeten niet worden geciteerd in de query-tekenreeks. Merk op dat de plaatshouder %D alleen gehele getallen accepteert, dus u kunt geen getallen met kommawaarden doorgeven via %d. Als u kommawaarden nodig hebt, gebruik dan %f als float.
Examples
Add meta key => value pair “Harriet’ s Adages “= > “WordPress’ database interface is like Sunday Morning: Easy.”naar Post 10.
$metakey= "Harriet's Adages";$metavalue= "WordPress' database interface is like Sunday Morning: Easy.";$wpdb->query( $wpdb->prepare( "INSERT INTO $wpdb->postmeta( post_id, meta_key, meta_value )VALUES ( %d, %s, %s )", 10, $metakey, $metavalue ) );
uitgevoerd in WordPress door add_meta()
.
dezelfde query met vsprintf () – achtige syntaxis.
$metakey = "Harriet's Adages";$metavalue = "WordPress' database interface is like Sunday Morning: Easy.";$wpdb->query( $wpdb->prepare( "INSERT INTO $wpdb->postmeta( post_id, meta_key, meta_value )VALUES ( %d, %s, %s )", array(10, $metakey, $metavalue) ) );
merk op dat we in dit voorbeeld de waarden samen in een array verpakken. Dit kan handig zijn als we niet weten hoeveel argumenten we moeten doorgeven tot runtime.
merk op dat u zich geen zorgen hoeft te maken over het citeren van tekenreeksen. In plaats van de variabelen direct door te geven aan de SQL query, gebruik je een %s
plaatshouder voor tekenreeksen, een %d
plaatshouder voor gehele getallen en een %f als plaatshouder voor floats. U kunt zoveel waarden doorgeven als u wilt, elk als een nieuwe parameter in de prepare()
methode.
SQL-fouten tonen en verbergen
u kunt echofouten in-en uitschakelen met respectievelijk show_errors
en hide_errors
.
<?php $wpdb->show_errors(); ?>
<?php $wpdb->hide_errors(); ?>
u kunt ook de fout afdrukken (indien aanwezig) gegenereerd door de meest recente query met print_error
.
<?php $wpdb->print_error(); ?>
Opmerking: Als u WordPress Multisite draait, moet u de constante DIEONDBERROR definiëren voor databasefouten om zo weer te geven: <?php define( 'DIEONDBERROR', true ); ?>
Kolominformatie ophalen
u kunt informatie ophalen over de kolommen van het meest recente zoekresultaat met get_col_info
. Dit kan handig zijn als een functie Een OBJECT heeft geretourneerd waarvan de eigenschappen je niet kent. De functie voert de gewenste informatie uit de opgegeven kolom uit, of een array met informatie over alle kolommen uit het query-resultaat als er geen kolom is opgegeven.
<?php $wpdb->get_col_info('type', offset); ?>
typ (string) welke informatie u wilt ophalen. Kan een van de volgende waarden aannemen (lijst uit de ezSQL docs). Standaard naam.
- naam-kolomnaam. Standaard.
- tabel – naam van de tabel de kolom behoort tot een
- max_length – maximale lengte van de kolom
- not_null – 1 als de kolom kan niet NULL
- primary_key – 1 als de kolom is een primaire sleutel
- unique_key – 1 als de kolom is een unieke toets
- multiple_key – 1 als de kolom is een niet-unieke toets
- numerieke – 1 als de kolom met numerieke
- blob – 1 als de kolom is een BLOB
- type – het type van de kolom
- unsigned – 1 als de kolom niet-ondertekende
- startnul – 1 als de kolom is opgevuld met een nul
offset (geheel getal) specificeer de kolom waaruit informatie moet worden opgehaald (waarbij 0 de eerste kolom is). Standaard -1.
- -1-informatie uit alle kolommen ophalen. Uitvoer als array. Standaard.
- niet-negatief geheel getal-informatie ophalen uit opgegeven kolom (0 is de eerste).
Cache wissen
u kunt de SQL-resultaatcache wissen met flush
.
<?php $wpdb->flush(); ?>
dit wist $wpdb->last_result
, $wpdb->last_query
, en $wpdb->col_info
.
Klassenvariabelen
$show_errors of error echoing is ingeschakeld. Standaard TRUE. $num_queries het aantal uitgevoerde queries. $last_query de meest recente zoekopdracht die uitgevoerd is. $last_error de meest recente fouttekst gegenereerd door MySQL. $queries u kunt alle queries draaien op de database en hun stoptijden op te slaan door het instellen van de SAVEQUERIES constant op TRUE (deze constante standaard FALSE). Als SAVEQUERIES waar is, worden uw query ‘ s opgeslagen in deze variabele als een array. $last_result de meest recente zoekresultaten. $col_info de kolominformatie voor de meest recente zoekresultaten. Zie Kolom-Informatie Ophalen. $ insert_id ID gegenereerd voor een AUTO_INCREMENT kolom door de meest recente insert query. $num_rows het aantal rijen geretourneerd door de laatste query. $prefix De toegewezen WordPress Tabel prefix voor de site. $base_prefix het originele voorvoegsel zoals gedefinieerd in wp-config.php. Voor multi-site: gebruik als u het voorvoegsel wilt krijgen zonder het blognummer toegevoegd.
Multi-Site variabelen
Als u Multi-Site gebruikt, heeft u ook toegang tot het volgende:
$blogid de id van de huidige site (blog). $siteid de id van het huidige netwerk (voorheen “site”). WordPress ondersteunt momenteel slechts één netwerk per multi-site installatie, maar dat kan veranderen in de toekomst. Zie het volgende voor meer informatie:
- WordPress: verschil tussen site_id en blog_id?
- http://stackoverflow.com/a/4189358/1924128 – nog een goed antwoord op dezelfde vraag.
tabellen
in de WordPress-databasetabellen wordt gemakkelijk verwezen naar de wpdb
– klasse.
$ posten de tabel met posten. $postmeta de Meta-inhoud (ook wel Custom Fields genoemd) tabel. $comments de commentaren tabel. $commentmeta de tabel bevat aanvullende commentaarinformatie. $termeta de termeta tabel bevat de term meta waarden. $ termen de termen tabel bevat de’ beschrijving ‘ van categorieën, Link categorieën, Tags. $term_taxonomy de term_taxonomy tabel beschrijft de verschillende taxonomieën (klassen van termen). Categorieën, Link categorieën, en Tags zijn taxonomieën. $term_relationships de term relaties tabel bevat een link tussen de term en het object dat die term gebruikt, wat betekent dat dit bestand verwijst naar elke categorie die gebruikt wordt voor elke Post. $users de tabel met gebruikers. $usermeta de usermeta tabel bevat extra gebruikersinformatie, zoals bijnamen, beschrijvingen en permissies. $links de tabel met Links. $opties de Optietabel.
Multisite-tabellen
deze tabellen worden alleen gebruikt in multisite-installaties.
$blogs de Blogs-tabel bevat een lijst van de afzonderlijke blogs (sites) die binnen het(de) netwerk (en) zijn opgezet. $ aanmeldingen de Aanmeldingstabel. $site de Sitetabel bevat een lijst van de netwerken (voorheen bekend als “sites” in WPMU) die zijn opgezet in de installatie (meestal is er slechts één site in deze tabel). $sitemeta de Network Options (Site meta) tabel bevat alle opties die van toepassing zijn op de gehele multisite installatie. $sitecategories de site Categories tabel. $registration_log de registratie log tabel. $blog_versions de Blogversies tabel.
bronbestand
wpdb () bevindt zich in wp-includes/wp-db.php
.
gerelateerd
- Member Function: wpdb:: esc_like () – Escape like statements voor gebruik in SQL.
Articles
- Article: The Loop-A basic overview of its use of query within the WordPress loop.
- artikel: Query overzicht-uitleg over hoe te bepalen welke queries genereren WordPress.
- Article: customizing Queries via Hook
- Article: View Articles MySQL query using custom
- Article: compiled advanced queries on Taxonomies
- Article: Build custom query using Offset and pagination
Code Documentation
- Class: WP_Query – Detailed Overview of class WP_Query
- Class: WP_Query – Detailed Overview of class WP_Query
- wp_comment_query-class for comment – related queries
- class: Wp_user_query-class for user-related queries
- object: $wpdb – Overview on the use of the $wpdb object
- Function: set_query_var()
- Function: get_query_var()
- Function: query_posts() – Create additional custom query
- Function: get_post() – Take an ID of an item and return the records in the database for that article
- Function: get_posts() – A gespecialiseerde functie die een array van items
- functie: get_pages() – een gespecialiseerde functie die een array van pagina ‘ s
- functie retourneert: have_posts() – Een conditie die bepaalt of de query geretourneerd artikel
- Functie: the_post (): wordt Gebruikt om automatisch de lus na een query
- Functie: rewind_posts() – hiermee Wist u de huidige loop
- Functie: setup_postdata() – hiermee Stelt u de gegevens voor een enkele query resultaat binnen een lus
- Functie: wp_reset_postdata() – Herstelt de vorige query (meestal na een lus binnen een andere lus)
- Functie: wp_reset_query()
- Functie: is_main_query () – zorgt ervoor dat de query die wordt gewijzigd alleen de hoofdquery
- actie Hook: pre_get_posts – Wijzig WordPress queries voordat ze worden uitgevoerd
- actie Hook: the_post-Wijzig het post object na query
- Filter Hook: found_posts-wijzigt de waarde van het object found_posts WP_Query