WordPress.org

Limbi: engleză • Italiano • 日本語 Русский • 中文(简体) • 中文(繁體) • 한국어 • (Adăuga limba dvs.)

Vorbind la baza de Date: wpdb Clasa

WordPress definește o clasă numită wpdb, care conține un set de funcții utilizate pentru a interacționa cu o bază de date. Scopul său principal este de a oferi o interfață cu baza de date WordPress, dar poate fi utilizată pentru a comunica cu orice altă bază de date adecvată. Codul sursă al clasei se bazează vag pe clasa ezSQL; scris și întreținut de Justin Vincent

folosind obiectul $wpdb

avertisment: metodele din clasa wpdb() nu trebuie apelate direct. Utilizați în schimb obiectul global $wpdb!

WordPress oferă o variabilă obiect global, $wpdb, care este o instanțiere a clasei wpdb definită în /wp-include/WP-db.php. În mod implicit, $wpdb este instantiat pentru a vorbi cu baza de date WordPress. Pentru a accesa $wpdb în codul PHP WordPress, declarați $wpdb ca variabilă globală folosind global keyword sau utilizați superglobalul $GLOBALS în felul următor:

// 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 );

obiectul $wpdb nu se limitează la tabelele implicite create de WordPress; poate fi folosit pentru a citi date din orice tabel din Baza de date WordPress (cum ar fi tabelele de pluginuri personalizate). De exemplu, pentru a selecta unele informații dintr-un tabel personalizat numit „mytable”, puteți face următoarele.

$myrows = $wpdb->get_results( "SELECT id, name FROM mytable" );

obiectul $wpdb poate vorbi cu orice număr de tabele, dar numai la o bază de date la un moment dat; în mod implicit baza de date WordPress. În cazurile rare în care trebuie să vă conectați la o altă bază de date, va trebui să vă instantiați propriul obiect din clasa wpdb cu propriile informații despre conexiunea bazei de date. Pentru setări extrem de complicate cu multe baze de date, luați în considerare utilizarea hyperdb în schimb.

un avertisment

unele dintre funcțiile din această clasă iau o instrucțiune SQL ca intrare. Trebuie să SQL scape toate valorile care nu sunt de încredere să includă în interogarea SQL pentru a preveni atacurile SQL injection. Verificați documentația pentru a vedea dacă funcția pe care intenționați să o utilizați scapă SQL pentru dvs. sau se așteaptă ca aceasta să fie pre-evadată.

pentru mai multe informații despre evadarea SQL în WordPress, consultați secțiunea intitulată protejați interogările împotriva atacurilor de injecție SQL de mai jos.

selectați o variabilă

funcția get_var returnează o singură variabilă din Baza de date. Deși este returnată o singură variabilă, întregul rezultat al interogării este memorat în cache pentru o utilizare ulterioară. Returnează NULL dacă nu se găsește niciun rezultat.

<?php $wpdb->get_var( 'query', column_offset, row_offset ); ?>

interogare (șir) interogarea pe care doriți să o executați. Setarea acestui parametru lanullva returna variabila specificată din rezultatele cache ale interogării anterioare. column_offset (integer) coloana dorită (0 fiind prima). Implicit la 0. row_offset (întreg) rândul dorit (0 fiind primul). Implicit la 0.

Exemple

regăsiți și afișați numărul de utilizatori.

<?php$user_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->users" );echo "<p>User count is {$user_count}</p>";?>

regăsiți și afișați suma unei valori de câmp particularizate.

<?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>";?> 

selectați un rând

pentru a prelua un rând întreg dintr-o interogare, utilizați get_row. Funcția poate returna rândul ca obiect, o matrice asociativă sau ca o matrice indexată numeric. Dacă mai mult de un rând este returnat de interogare, numai rândul specificat este returnat de funcție, dar toate rândurile sunt memorate în cache pentru o utilizare ulterioară. Returnează NULL dacă nu se găsește niciun rezultat, luați în considerare acest lucru atunci când utilizați valoarea returnată în argumente, consultați exemplul de mai jos.

<?php $wpdb->get_row('query', output_type, row_offset); ?>

interogare (șir) interogarea pe care doriți să o executați. output_type una dintre cele trei constante predefinite. Implicit la obiect.

  • obiect – rezultatul va fi afișat ca obiect.
  • ARRAY_A – rezultatul va fi afișat ca o matrice asociativă.
  • ARRAY_N – rezultatul va fi afișat ca o matrice indexată numeric.

row_offset (întreg) rândul dorit (0 fiind primul). Implicit la 0.

Exemple

obțineți toate informațiile despre linkul 10.

$mylink = $wpdb->get_row( "SELECT * FROM $wpdb->links WHERE link_id = 10" );

proprietățile obiectului $mylink sunt numele coloanelor rezultatului din interogarea SQL (în acest exemplu, toate coloanele din tabelul $wpdb->links, dar puteți interoga numai pentru anumite coloane).

echo $mylink->link_id; // prints "10"

în contrast, utilizarea

$mylink = $wpdb->get_row( "SELECT * FROM $wpdb->links WHERE link_id = 10", ARRAY_A );

ar avea ca rezultat o matrice asociativă:

echo $mylink; // prints "10"

și

$mylink = $wpdb->get_row( "SELECT * FROM $wpdb->links WHERE link_id = 10", ARRAY_N );

ar avea ca rezultat o matrice indexată numeric:

echo $mylink; // prints "10"

dacă nu există nicio înregistrare cu ID 10 în tabelul de linkuri, null va fi returnat. Următoarele ar fi false:

if ( null !== $mylink ) { // do something with the link return true;} else { // no link found return false;}

selectați o coloană

pentru a selecta o coloană, utilizați get_col. Această funcție produce o matrice unidimensională. Dacă mai multe coloane sunt returnate de interogare, numai coloana specificată va fi returnată de funcție, dar întregul rezultat este memorat în cache pentru o utilizare ulterioară. Returnează o matrice goală dacă nu se găsește niciun rezultat.

<?php $wpdb->get_col( 'query', column_offset ); ?>

interogare (șir) interogarea pe care doriți să o executați. Setarea acestui parametru lanullva returna coloana specificată din rezultatele cache ale interogării anterioare. column_offset (integer) coloana dorită (0 fiind prima). Implicit la 0.

Exemple

pentru acest exemplu, să presupunem că blogul este dedicat informațiilor despre automobile. 1969 Ford Mustang) și trei câmpuri personalizate, producător, model și an, sunt atribuite fiecărui post. Acest exemplu va afișa titlurile postărilor, filtrate de un anumit producător (Ford) și sortate după model și an.

forma get_col a clasei wpdb este utilizată pentru a returna o matrice a tuturor ID-urilor post care îndeplinesc criteriile și sortate în ordinea corectă. Apoi, o construcție foreach este utilizată pentru a itera prin acea matrice de ID-uri de postare, afișând titlul fiecărei postări. Rețineți că SQL pentru acest exemplu a fost creat de 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} }?>

acest exemplu listează toate postările care conțin un anumit câmp personalizat, dar sortate după valoarea unui al doilea câmp personalizat.

<?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}}?>

selectați rezultate generice

rezultate generice, mai multe rânduri pot fi extrase din Baza de date cu get_results. Funcția returnează întregul rezultat al interogării ca o matrice. Fiecare element al acestei matrice corespunde unui rând al rezultatului interogării și, ca get_row, poate fi un obiect, o matrice asociativă sau o matrice numerotată. Dacă nu se găsesc rânduri potrivite sau dacă există o eroare a bazei de date, valoarea returnată va fi o matrice goală. $Șir de interogare este gol, sau treci un $output_type nevalid, NULL va fi returnat.

<?php $wpdb->get_results( 'query', output_type ); ?>

interogare (șir) interogarea pe care doriți să o executați. output_type una din cele patru constante predefinite. Implicit la obiect. Consultați Selectarea unui rând și exemplele acestuia pentru mai multe informații.

  • OBJECT – result va fi afișat ca o matrice indexată numeric de obiecte rând.
  • OBJECT_K – rezultatul va fi afișat ca o matrice asociativă de obiecte de rând, folosind valorile primei coloane ca chei (duplicatele vor fi eliminate).
  • ARRAY_A – rezultatul va fi afișat ca o matrice indexată numeric de matrice asociative, folosind numele coloanelor ca chei.
  • ARRAY_N – rezultatul va fi afișat ca o matrice indexată numeric de matrice indexate numeric.

deoarece această funcție utilizează funcția $wpdb-> query (), toate variabilele clasei sunt setate corect. Rezultatele conta pentru o interogare ‘SELECT’ vor fi stocate în $wpdb->num_rows.

Exemple

obțineți ID-urile și titlurile tuturor schițelor de către utilizatorul 5 și ecou titlurile.

$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;}

obțineți toate informațiile despre schițe de către utilizator 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}?>

introduceți rândul

introduceți un rând într-un tabel.

<?php $wpdb->insert( $table, $data, $format ); ?>

tabel (șir) numele tabelului pentru a insera date în. date (matrice) date de inserat (în coloană => perechi de valori). Ambele coloane $data și valorile $data ar trebui să fie „raw” (nici nu ar trebui să fie SQL scăpat). format (array / string) (opțional) o serie de formate care urmează să fie mapate la fiecare dintre valorile din $data. Dacă șir, acel format va fi utilizat pentru toate valorile din $data. Dacă sunt omise, toate valorile din $data vor fi tratate ca șiruri dacă nu se specifică altfel în wpdb::$field_types.

valori de format posibile: %s ca șir; %d ca întreg (număr întreg); și %f ca float. (A se vedea mai jos pentru mai multe informații.)

după inserare, ID-ul generat pentru coloana AUTO_INCREMENT poate fi accesat cu:

$wpdb->insert_id

această funcție returnează false dacă rândul nu a putut fi introdus. În caz contrar, returnează numărul de rânduri afectate (care va fi întotdeauna 1).

vă rugăm să rețineți: porțiunea de valoare din coloana parametrului de date= >perechile de valori trebuie să fie scalare. Dacă treceți o matrice (sau obiect) ca valoare care urmează să fie inserată, veți genera un avertisment similar cu „mysql_real_escape_string () se așteaptă ca parametrul 1 să fie șir, matrice dată pe linia 880 în fișier /var/www/html/wp-include/WP-db.php”.

Exemple

introduceți două coloane într-un rând, prima valoare fiind un șir și al doilea un număr:

$wpdb->insert( 'table', array( 'column1' => 'value1', 'column2' => 123 ), array( '%s', '%d' ) );

înlocuiți rândul

înlocuiți un rând dintr-un tabel dacă există sau introduceți un rând nou într-un tabel dacă rândul nu exista deja.

<?php $wpdb->replace( $table, $data, $format ); ?>

tabel (șir) numele tabelului pentru a înlocui datele din. date (matrice) date de înlocuit (în coloană => perechi de valori). Ambele coloane $data și valorile $data ar trebui să fie „raw” (nici nu ar trebui să fie SQL scăpat). format (array / string) (opțional) o serie de formate care urmează să fie mapate la fiecare valoare în $data. Dacă șir, acel format va fi utilizat pentru toate valorile din $data. Dacă sunt omise, toate valorile din $data vor fi tratate ca șiruri dacă nu se specifică altfel în wpdb::$field_types.

valori de format posibile: %s ca șir; %d ca întreg (număr întreg); și %f ca float. (A se vedea mai jos pentru mai multe informații.)

dacă lungimea unui element de șir din parametrul $data array este mai lungă decât lungimea definită în tabelul bazei de date MySql, inserția va eșua, această funcție va reveni fals, dar $wpdb-> last_error nu va fi setat la un mesaj descriptiv. Trebuie să vă asigurați că datele pe care doriți să le inserați se vor încadra în baza de date – nu presupuneți că MySql va trunchia datele.

după înlocuire, ID-ul generat pentru coloana AUTO_INCREMENT poate fi accesat cu:

$wpdb->insert_id

această funcție returnează un număr pentru a indica numărul de rânduri afectate. Aceasta este suma rândurilor șterse și inserate. Dacă numărul este 1 pentru o înlocuire cu un singur rând, a fost introdus un rând și nu au fost șterse rânduri. Dacă numărul este mai mare de 1, Unul sau mai multe rânduri vechi au fost șterse înainte de introducerea noului rând. Este posibil ca un singur rând să înlocuiască mai mult de un rând vechi dacă tabelul conține mai mulți indici unici, iar noul rând duplică valori pentru diferite rânduri vechi în indici unici diferiți.

această funcție returnează false dacă un rând existent nu a putut fi înlocuit și un rând nou nu a putut fi introdus.

Exemple

înlocuiți un rând, prima valoare fiind id-ul rândului, al doilea un șir și al treilea un număr:

$wpdb->replace( 'table', array( 'indexed_id' => 1,'column1' => 'value1', 'column2' => 123 ), array( '%d','%s', '%d' ) );

actualizați rândurile

actualizați un rând din tabel. Returnează false dacă erori, sau numărul de rânduri afectate în cazul în care cu succes.

<?php $wpdb->update( $table, $data, $where, $format = null, $where_format = null ); ?>

tabel (șir) numele tabelului de actualizat. date (matrice) date de actualizat (în coloana => perechi de valori). Ambele coloane $data și valorile $data ar trebui să fie „raw” (nici nu ar trebui să fie SQL scăpat). Aceasta înseamnă că, dacă utilizați Obțineți sau postați date, poate fi necesar să utilizați stripslashes() pentru a evita ca slash-urile să ajungă în baza de date. unde (array) o matrice numită de clauze WHERE (în coloană => perechi de valori). Mai multe clauze vor fi unite cu ANDs. Atât $unde coloanele, cât și $unde valorile ar trebui să fie”brute”. format (array / string) (opțional) o serie de formate care urmează să fie mapate la fiecare dintre valorile din $data. Dacă șir, acel format va fi utilizat pentru toate valorile din $data. where_format (array / string) (opțional) o serie de formate care urmează să fie mapate la fiecare dintre valorile din $unde. Dacă șir, acel format va fi utilizat pentru toate elementele din $unde.

valori de format posibile: %s ca șir; %d ca întreg (număr întreg) și %f ca float. (A se vedea mai jos pentru mai multe informații.) Dacă sunt omise, toate valorile din $unde vor fi tratate ca șiruri de caractere.

valori returnate: Această funcție returnează numărul de rânduri actualizate sau false dacă există o eroare. Rețineți că dacă $data se potrivește cu ceea ce este deja în baza de date, nu vor fi actualizate rânduri, deci 0 va fi returnat. Din această cauză, ar trebui să verificați probabil return with false = = = $result

Examples

actualizați un rând, unde ID-ul este 1, valoarea din prima coloană este un șir și valoarea din a doua coloană este un număr:

$wpdb->update( 'table', array( 'column1' => 'value1',// string'column2' => 'value2'// integer (number) ), array( 'ID' => 1 ), array( '%s',// value1'%d'// value2), array( '%d' ) );

atenție: %d nu poate trata valorile virgulelor – dacă nu utilizați numere complete, utilizați șirul / %s.

ștergeți rândurile

funcția de ștergere a fost adăugată în WordPress 3.4.0 și poate fi utilizată pentru a șterge rândurile dintr-un tabel. Utilizarea este foarte asemănătoare cu actualizarea și inserarea. Se întoarce numărul de rânduri actualizate, sau false pe eroare.

utilizare

<?php $wpdb->delete( $table, $where, $where_format = null ); ?>

parametrii

$table (string) (obligatoriu) numele tabelului. Implicit: nici unul $unde (array) (obligatoriu) o matrice numită a clauzelor WHERE (în coloana -> perechi de valori). Mai multe clauze vor fi unite cu ANDs. Ambele $ unde coloanele și $unde valorile ar trebui să fie ‘raw’. Implicit: Nici unul $ where_format (string / array) (opțional) o serie de formate care urmează să fie mapate la fiecare dintre valorile din $unde. În cazul în care un șir de caractere, acel format va fi utilizat pentru toate elementele din $unde. Un format este unul dintre ‘%d’, ‘%f’, ‘%S ‘ (integer, float, string; vezi mai jos pentru mai multe informații). Dacă sunt omise, toate valorile din $unde vor fi tratate ca șiruri dacă nu se specifică altfel în wpdb::$field_types. Implicit: null

Exemple

// Default usage.$wpdb->delete( 'table', array( 'ID' => 1 ) );// Using where formatting.$wpdb->delete( 'table', array( 'ID' => 1 ), array( '%d' ) );

rularea interogărilor generale

funcția query vă permite să executați orice interogare SQL în baza de date WordPress. Este cel mai bine utilizat atunci când este nevoie de interogări SQL specifice, personalizate sau altfel complexe. Pentru mai multe interogări de bază, cum ar fi selectarea informațiilor dintr-un tabel, consultați celelalte funcții wpdb de mai sus, cum ar fi get_results, get_var, get_row or get_col.

sintaxă generală

<?php $wpdb->query('query'); ?>

interogare (șir) interogarea SQL pe care doriți să o executați.

această funcție returnează o valoare întreagă care indică numărul de rânduri afectate / selectate pentru selectare, Inserare, ștergere, actualizare etc. Pentru a crea, modifica, trunchia și DROP instrucțiuni SQL, (care afectează tabele întregi în loc de rânduri specifice) această funcție returnează TRUE pe succes. Dacă se întâlnește o eroare MySQL, funcția va reveni FALSE. Rețineți că, deoarece atât 0, cât și FALSE pot fi returnate pentru interogări pe rând, trebuie să fiți atenți atunci când verificați valoarea returnată. Utilizați operatorul de identitate ( = = = ) pentru a verifica erorile (de exemplu, false === $rezultat) și dacă au fost afectate rânduri (de exemplu, 0 === $rezultat).

Exemple

ștergeți meta-cheia și valoarea ‘gargle’ din Post 13. (Vom adăuga metoda ‘pregătiți’ pentru a ne asigura că nu avem de-a face cu o operațiune ilegală sau cu caractere ilegale):

$wpdb->query( $wpdb->prepare( " DELETE FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s", 13, 'gargle' ));

realizat în WordPress de delete_post_meta().

setați părintele paginii 15 la pagina 7.

$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_parent = %dWHERE ID = %dAND post_status = %s", 7, 15, 'static') );

protejați interogările împotriva atacurilor de injecție SQL

pentru o imagine de ansamblu mai completă a scăpării SQL în WordPress, consultați validarea datelor bazei de date. Este un must-read pentru toți contribuitori Cod WordPress și autori plugin.

toate datele din interogările SQL trebuie să fie scăpate SQL înainte ca interogarea SQL să fie executată pentru a preveni atacurile de injecție SQL. Metoda prepare efectuează această funcționalitate pentru WordPress, care acceptă atât o sintaxă asemănătoare sprintf (), cât și vsprintf ().

vă rugăm să rețineți: ca de 3.5, wpdb::pregăti () impune un minim de 2 argumente.

<?php $sql = $wpdb->prepare( 'query' , value_parameter ); ?>

interogare (șir) interogarea SQL pe care doriți să o executați, cu substituenți (vezi mai jos). value_parameter (int|string|array) valoarea de înlocuit în substituent. Multe valori pot fi trecute prin simpla trecere a mai multor argumente într-un mod asemănător sprintf (). Alternativ, al doilea argument poate fi o matrice care conține valorile ca în funcția VSPRINTF() a PHP. Trebuie să aveți grijă să nu permiteți introducerea directă a utilizatorului la acest parametru, ceea ce ar permite manipularea matricei oricărei interogări cu mai mulți substituenți. Valorile nu pot fi SQL-a scăpat.

substituenți

parametrul de interogare pentru pregătire acceptă substituenți asemănători sprintf (). Formatele %s (string), %d (integer) și %f (float) sunt acceptate. (Substituenții %s și % d au fost disponibili de când funcția a fost adăugată la core în versiunea 2.3, %f a fost disponibilă numai de la versiunea 3.3.) Orice alte caractere % pot cauza erori de parsare, cu excepția cazului în care sunt scăpate. Toate caracterele % din LITERALELE șirurilor SQL, inclusiv metacaracterele LIKE, trebuie să fie dublu – % scăpat ca %%. Toate %d, % f și %s trebuie lăsate necotate în șirul de interogare. Rețineți că substituentul %d acceptă numai numere întregi, deci nu puteți trece numere care au valori virgulă prin %d. Dacă aveți nevoie de valori virgulă, utilizați %f ca float în schimb.

Exemple

adăugați Meta-cheie => pereche de valori „adages Harriet” = > „interfața bazei de date WordPress este ca duminică dimineața: ușor.”pentru a posta 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 ) );

realizat în WordPress de add_meta().

aceeași interogare folosind sintaxa vsprintf()-like.

$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) ) );

rețineți că în acest exemplu împachetăm valorile împreună într-o matrice. Acest lucru poate fi util atunci când nu știm numărul de argumente pe care trebuie să le transmitem până la rulare.

observați că nu trebuie să vă faceți griji cu privire la citarea șirurilor. În loc să transmiteți variabilele direct în interogarea SQL, utilizați un substituent %s pentru șiruri de caractere, un placedolder %d pentru numere întregi și un %f ca substituent pentru flotoare. Puteți trece cât mai multe valori doriți, fiecare ca un nou parametru în metoda prepare().

afișați și ascundeți Erorile SQL

puteți activa și dezactiva ecoul de eroare cu show_errors și, respectiv, hide_errors.

<?php $wpdb->show_errors(); ?>
<?php $wpdb->hide_errors(); ?>

de asemenea, puteți imprima eroarea (dacă există) generată de cea mai recentă interogare cu print_error.

<?php $wpdb->print_error(); ?>

Notă: Dacă rulați WordPress Multisite, trebuie să definiți Constanta DIEONDBERROR pentru ca erorile bazei de date să se afișeze astfel:
<?php define( 'DIEONDBERROR', true ); ?>

obținerea informațiilor despre coloană

puteți prelua informații despre coloanele celui mai recent rezultat al interogării cu get_col_info. Acest lucru poate fi util atunci când o funcție a returnat un obiect ale cărui proprietăți nu le cunoașteți. Funcția va afișa informațiile dorite din coloana specificată sau o matrice cu informații despre toate coloanele din rezultatul interogării dacă nu este specificată nicio coloană.

<?php $wpdb->get_col_info('type', offset); ?>

tastați (șir) ce informații doriți să preluați. Poate prelua oricare dintre următoarele valori (lista preluată din documentele ezSQL). Implicit la nume.

  • nume – numele coloanei. Implicit.
  • tabel – numele tabelului coloana aparține
  • max_length – lungimea maximă a coloanei
  • not_null – 1 dacă coloana nu poate fi nulă
  • primary_key – 1 dacă coloana este o cheie primară
  • unique_key – 1 dacă coloana este o cheie unică
  • multiple_key – 1 dacă coloana este o cheie non-unică
  • numeric – 1 dacă coloana este numerică
  • blob – 1 dacă coloana este o blob
  • tip – tipul coloanei
  • nesemnat – 1 dacă coloana este nesemnat
  • zerofill – 1 dacă coloana este zero-umplut

offset (integer) specificați coloana din care să preluați informații (cu 0 fiind prima coloană). Implicit la -1.

  • -1 – preluați informații din toate coloanele. Ieșire ca matrice. Implicit.
  • număr întreg non-negativ – extrageți informații din coloana specificată (0 fiind primul).

ștergerea memoriei Cache

puteți șterge memoria cache a rezultatelor SQL cu flush.

<?php $wpdb->flush(); ?>

aceasta șterge $wpdb->last_result, $wpdb->last_queryși $wpdb->col_info.

variabile de clasă

$show_errors dacă este activată sau nu ecoul de eroare. Implicit la adevărat. $num_queries Numărul de interogări care au fost executate. $last_query cea mai recentă interogare care a fost executată. $last_error cel mai recent text de eroare generat de MySQL. $ interogări puteți salva toate interogările rulate în baza de date și timpii de oprire prin setarea Constantei SAVEQUERIES la TRUE (această constantă este implicită la FALSE). Dacă SAVEQUERIES este adevărat, interogările dvs. vor fi stocate în această variabilă ca o matrice. $last_result cele mai recente rezultate de interogare. $col_info informațiile coloană pentru cele mai recente rezultate de interogare. Consultați Obținerea Informațiilor Despre Coloană. $insert_id ID generat pentru o coloană AUTO_INCREMENT de cea mai recentă interogare Inserare. $num_rows Numărul de rânduri returnate de ultima interogare. $prefix prefixul de masă WordPress alocat pentru site. $base_prefix prefixul original așa cum este definit în wp-config.php. Pentru multi-site: utilizați dacă doriți să obțineți prefixul fără numărul blogului anexat.

variabile Multi-Site

dacă utilizați Multi-Site, aveți, de asemenea, acces la următoarele:

$blogid id-ul site-ului curent (blog). $siteid id-ul rețelei curente (anterior „site”). WordPress acceptă în prezent o singură rețea pentru fiecare instalare pe mai multe site-uri, dar acest lucru s-ar putea schimba în viitor. Consultați următoarele pentru mai multe informații:

  • WordPress: diferența dintre site_id și blog_id?
  • http://stackoverflow.com/a/4189358/1924128 – un alt răspuns bun la aceeași întrebare.

tabele

tabelele bazei de date WordPress sunt ușor de menționat în clasa wpdb.

$ Postează tabelul postărilor. $postmeta conținutul Meta (alias câmpuri personalizate) tabel. $comentarii tabelul Comentarii. $commentmeta tabelul conține informații suplimentare comentariu. $termmeta tabelul termmeta conține valorile meta pe termen. $Termeni tabelul de termeni conține ‘descrierea’ categoriilor, categoriilor de linkuri, etichetelor. $term_taxonomy tabelul term_taxonomy descrie diferitele taxonomii (clase de termeni). Categoriile, categoriile de linkuri și etichetele sunt taxonomii. $term_relationships tabelul de relații pe termen conține legătura dintre termen și obiectul care utilizează acel termen, ceea ce înseamnă că acest fișier indică fiecare categorie utilizată pentru fiecare postare. $utilizatori tabelul utilizatorilor. $usermeta tabelul usermeta conține informații suplimentare despre utilizator, cum ar fi Porecle, descrieri și permisiuni. $ link-uri tabelul de link-uri. $opțiuni tabelul de opțiuni.

tabele Multisite

aceste tabele sunt utilizate numai în instalații multisite.

$ blogs tabelul bloguri conține o listă a blogurilor (site-urilor) separate care au fost configurate în cadrul rețelei(rețelelor). $ înscrieri tabelul înscrieri. $site tabelul Site conține o listă a rețelelor (cunoscute anterior ca „site-uri” în WPMU) care sunt configurate în instalare (de obicei există un singur site listat în acest tabel). $sitemeta tabelul Opțiuni de rețea (Meta Site) conține toate opțiunile care se aplică întregii instalări multisite. $sitecategories tabelul categoriilor Site-ului. $registration_log tabelul jurnal de înregistrare. $blog_versions tabelul versiuni Blog.

fișier sursă

wpdb() este situat în wp-includes/wp-db.php.

înrudite

  • funcția membru: wpdb::esc_like() – Escape ca declarații înainte de utilizare în SQL.

articole

  • articol: bucla – o prezentare generală de bază a utilizării interogării în bucla WordPress.
  • articol: Query Overview-explicație a modului de a determina ce interogări generează WordPress.
  • articol: personalizarea interogări prin cârlig
  • articol: Vezi articole MYSQL interogare folosind personalizat
  • articol: construi interogări avansate pe taxonomii
  • articol: construi interogare personalizat folosind Offset și paginare

documentație Cod

  • clasă: WP_Query – prezentare detaliată a clasei WP_Query
  • clasă: Wp_comment_query – clasă pentru interogări legate de comentarii
  • clasă: Wp_user_query-clasă pentru interogări legate de utilizator
  • obiect: $wpdb – privire de ansamblu asupra utilizării obiectului $wpdb
  • funcție: set_query_var()
  • funcție: get_query_var()
  • funcție: query_posts() – creați interogare personalizată suplimentară
  • funcție: get_post() – luați un ID al unui element și returnați înregistrările din Baza de date pentru acel articol
  • funcție: get_posts() – o funcție specializată care returnează o serie de elemente
  • funcție: get_pages() – o funcție specializată care returnează o serie de pagini
  • funcție: have_posts() – o condiție care determină dacă interogarea a returnat un articol
  • funcție: the_post() – folosit pentru a seta automat bucla după o interogare
  • funcție: rewind_posts() – șterge bucla curentă
  • funcție: setup_postdata() – Setează datele pentru un singur rezultat de interogare într – o buclă
  • funcție: wp_reset_postdata () – restabilește interogarea anterioară (de obicei, după o buclă într-o altă buclă)
  • funcție: wp_reset_query()
  • funcție: is_main_query () – asigură că interogarea care este modificată este doar interogarea principală
  • Cârlig de acțiune: pre_get_posts-schimbați interogările WordPress înainte de a fi executate
  • Cârlig de acțiune: the_post-modificați obiectul post după interogare
  • Cârlig de filtrare: found_posts-modifică valoarea obiectului found_posts WP_Query

Lasă un răspuns

Adresa ta de email nu va fi publicată.

Previous post hrănirea puștiulică
Next post Chicago White Sox: Brad mână nu ar fi un rău ridica