WordPress.org

Nyelvek: angol • Italiano • 日本語 Русский • 中文(简体) • 中文(繁體) • 한국어 • (Hozzáadás a nyelv)

Beszél, hogy az Adatbázisban: A wpdb Osztály

WordPress meghatározza, hogy egy osztály, az úgynevezett wpdb, amely tartalmazza a használt függvényeket, hogy befolyásolja egy adatbázis. Elsődleges célja, hogy interfészt biztosítson a WordPress adatbázissal, de felhasználható bármely más megfelelő adatbázissal való kommunikációra. Az osztály forráskódja lazán az ezSQL osztályon alapul; írta és karbantartja Justin Vincent

a $wpdb objektum

figyelmeztetés: A wpdb() osztály metódusait nem szabad közvetlenül meghívni. Használja helyette a globális $wpdb objektumot!

a WordPress globális objektumváltozót biztosít, $wpdb, amely a /wp-includes/wp-db-ben definiált wpdb osztály példánya.php. Alapértelmezés szerint a $wpdbpéldány a WordPress adatbázishoz való beszélgetéshez. A $wpdb eléréséhez a WordPress PHP kódjában deklarálja a $wpdb globális változót a global keyword használatával, vagy használja a superglobal $GLOBALS a következő módon:

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

a $wpdb objektum nem korlátozódik a WordPress által létrehozott alapértelmezett táblákra; felhasználható a WordPress adatbázis bármely táblájának adatainak olvasására (például egyéni bővítménytáblák). Például a “mytable” nevű egyéni táblából bizonyos információk kiválasztásához tegye a következőket.

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

a $wpdb objektum tetszőleges számú táblával beszélhet, de egyszerre csak egy adatbázishoz; alapértelmezés szerint a WordPress adatbázis. Abban a ritka esetben, ha csatlakoznia kell egy másik adatbázishoz, a saját objektumát a wpdb osztályból kell példányosítania a saját adatbázis-kapcsolati adataival. Rendkívül bonyolult beállításokhoz, sok adatbázissal, fontolja meg a hyperdb használatát.

figyelmeztetés

az osztály néhány funkciója SQL utasítást vesz bemenetként. Meg kell SQL menekülni minden nem megbízható értékeket bele az SQL lekérdezés, hogy megakadályozzák SQL injekció támadások. Ellenőrizze a dokumentációt, hogy a használni kívánt függvény megszökik-e az SQL-ből az Ön számára, vagy azt várja, hogy előre megszökött.

További információ az SQL menekülésről a WordPress programban, lásd a lekérdezések védelme az SQL injekciós támadások ellen című részt.

válasszon egy változót

a get_var függvény egyetlen változót ad vissza az adatbázisból. Bár csak egy változót ad vissza, a lekérdezés teljes eredményét gyorsítótárba helyezi későbbi felhasználás céljából. NULL értéket ad vissza, ha nem talál eredményt.

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

lekérdezés (karakterlánc) a futtatni kívánt lekérdezés. Ha ezt a paramétertnullértékre állítja, akkor az előző lekérdezés gyorsítótárazott eredményeiből adja vissza a megadott változót. column_offset (integer) a kívánt oszlop (0 az első). Az alapértelmezett érték 0. row_offset (egész szám) a kívánt sor (0 az első). Az alapértelmezett érték 0.

példák

a felhasználók számának lekérése és megjelenítése.

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

egy egyéni Mezőérték összegének lekérése és megjelenítése.

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

sor kiválasztása

egy teljes sor lekérdezésből történő lekéréséhez használja a get_row parancsot. A függvény visszaadhatja a sort objektumként, asszociatív tömbként vagy numerikusan indexelt tömbként. Ha a lekérdezés egynél több sort ad vissza, akkor a függvény csak a megadott sort adja vissza, de az összes sort gyorsítótárazza későbbi felhasználás céljából. NULL értéket ad vissza, ha nem talál eredményt, fontolja meg ezt, ha a visszaadott értéket argumentumokban használja, lásd az alábbi példát.

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

lekérdezés (karakterlánc) a futtatni kívánt lekérdezés. output_type három előre meghatározott konstans egyike. Alapértelmezés szerint az objektum.

  • objektum – az eredmény objektumként kerül kiadásra.
  • ARRAY_A – az eredmény asszociatív tömbként kerül kiadásra.
  • ARRAY_N – az eredmény számszerűen indexelt tömbként kerül kiadásra.

row_offset (egész szám) a kívánt sor (0 az első). Az alapértelmezett érték 0.

példák

Szerezd meg az összes információt Link 10.

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

a $mylink objektum tulajdonságai az SQL lekérdezés eredményének oszlopnevei (ebben a példában a $wpdb->links táblázat összes oszlopa, de csak bizonyos oszlopokat is lekérdezhet).

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

ezzel szemben a

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

használata asszociatív tömböt eredményezne:

echo $mylink; // prints "10"

és

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

számszerűen indexelt tömböt eredményezne:

echo $mylink; // prints "10"

ha nincs rekord ID 10 a linkek táblázatban, null lesz visszaadva. A következő akkor hamis lenne:

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

oszlop kiválasztása

oszlop kiválasztásához használja a get_colelemet. Ez a funkció egydimenziós tömböt ad ki. Ha a lekérdezés egynél több oszlopot ad vissza, akkor a függvény csak a megadott oszlopot adja vissza, de a teljes eredmény gyorsítótárba kerül későbbi felhasználás céljából. Üres tömböt ad vissza, ha nem található eredmény.

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

lekérdezés (karakterlánc) a végrehajtani kívánt lekérdezés. Ha ezt a paramétertnullértékre állítja, a megadott oszlopot adja vissza az előző lekérdezés gyorsítótárazott eredményeiből. column_offset (integer) a kívánt oszlop (0 az első). Az alapértelmezett érték 0.

példák

ebben a példában tegyük fel, hogy a blog az autókkal kapcsolatos információkkal foglalkozik. 1969-es Ford Mustang), és három egyéni mező, gyártó, modell és év van hozzárendelve minden bejegyzéshez. Ez a példa megjeleníti a bejegyzések címeit, egy adott gyártó (Ford) által szűrve, modell és év szerint rendezve.

a Wpdb osztály get_col formája arra szolgál, hogy visszaadja a feltételeknek megfelelő összes post azonosítót, és a megfelelő sorrendben rendezze. Ezután egy foreach konstrukciót használnak a bejegyzésazonosítók tömbjének iterálására, megjelenítve az egyes bejegyzések címét. Vegye figyelembe, hogy a példa SQL-jét Andomar hozta létre.

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

ez a példa felsorolja az összes olyan bejegyzést, amely egy adott egyéni mezőt tartalmaz, de egy második egyéni mező értéke szerint rendezve.

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

általános eredmények kiválasztása

Általános, többsoros eredmények húzhatók az adatbázisból get_results – vel. A függvény a teljes lekérdezés eredményét tömbként adja vissza. A tömb minden eleme a lekérdezés eredményének egy sorának felel meg, és a get_row – hez hasonlóan lehet objektum, asszociatív tömb vagy számozott tömb. Ha nem talál megfelelő sorokat, vagy ha adatbázishiba van, a visszatérési érték üres tömb lesz. Ha a $lekérdezési karakterlánc üres, vagy érvénytelen $output_type értéket ad át, A NULL érték kerül visszaadásra.

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

lekérdezés (karakterlánc) a futtatni kívánt lekérdezés. output_type négy előre meghatározott konstans egyike. Alapértelmezés szerint az objektum. További információkért lásd: sor kiválasztása és példái.

  • az objektum – eredmény a sorobjektumok numerikusan indexelt tömbjeként kerül kiadásra.
  • OBJECT_K – az eredmény sorobjektumok asszociatív tömbjeként kerül kiadásra, az első oszlop értékeit használva kulcsként (a másolatok eldobásra kerülnek).
  • ARRAY_A – az eredmény asszociatív tömbök numerikusan indexelt tömbjeként kerül kiadásra, kulcsként oszlopneveket használva.
  • ARRAY_N – az eredmény számszerűen indexelt tömbök számszerűen indexelt tömbjeként kerül kiadásra.

mivel ez a függvény a $wpdb-> query() függvényt használja, az összes osztályváltozó megfelelően van beállítva. A ‘SELECT’ lekérdezés eredményei a $wpdb->num_rows-ban lesznek tárolva.

példák

szerezze be az összes Piszkozat azonosítóját és címét az 5 felhasználó által, és visszhangozza a címeket.

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

az összes információt a tervezetek felhasználó 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}?>

sor beszúrása

sor beszúrása egy táblázatba.

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

táblázat (karakterlánc) annak a táblának a neve, amelybe adatokat kell beszúrni. adatok (tömb) beszúrandó adatok (oszlopban => értékpárok). Mind a $data oszlopoknak, mind a $data értékeknek “raw” – nak kell lenniük (egyik sem lehet SQL megszökött). format (array|string) (opcionális) formátumok tömbje, amelyet a $data egyes értékeihez kell leképezni. Ha karakterlánc, akkor ezt a formátumot fogja használni a $data összes értékéhez. Ha nincs megadva, a $data összes értéke karakterláncként lesz kezelve, hacsak a wpdb::$field_types másként nem rendelkezik.

lehetséges formátumértékek: % s mint string; %d mint egész (egész szám); és %f mint float. (További információkért lásd alább.)

beszúrás után az AUTO_INCREMENT oszlophoz létrehozott azonosító a következővel érhető el:

$wpdb->insert_id

ez a függvény false értéket ad vissza, ha a sor nem illeszthető be. Ellenkező esetben az érintett sorok számát adja vissza (amely mindig 1 lesz).

kérjük, vegye figyelembe: az adatparaméter oszlopának értékrészének=> értékpároknak skalárisnak kell lenniük. Ha át egy tömb (vagy objektum), mint egy értéket kell beilleszteni akkor létrehoz egy figyelmeztetés hasonló “mysql_real_escape_string () elvárja paraméter 1, hogy string, tömb adott sorban 880 fájl /var/www/html/wp-includes/wp-db.php”.

példák

helyezzen be két oszlopot egymás után, az első érték egy karakterlánc, a második pedig egy szám:

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

sor cseréje

táblázat sorának cseréje, ha létezik, vagy új sor beszúrása a táblázatba, ha a sor még nem létezett.

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

táblázat (karakterlánc) annak a táblának a neve, amelyben az adatokat le kell cserélni. a helyettesítendő adatok (tömb) (oszlopban => értékpárok). Mind a $data oszlopoknak, mind a $data értékeknek “raw” – nak kell lenniük (egyik sem lehet SQL megszökött). format (array|string) (opcionális) a formátumok tömbje, amelyet a $data értékéhez kell hozzárendelni. Ha karakterlánc, akkor ezt a formátumot fogja használni a $data összes értékéhez. Ha nincs megadva, a $data összes értéke karakterláncként lesz kezelve, hacsak a wpdb::$field_types másként nem rendelkezik.

lehetséges formátumértékek: % s mint string; %d mint egész (egész szám); és %f mint float. (További információkért lásd alább.)

ha a $data array paraméterben egy karakterlánc elem hossza hosszabb, mint a MySQL adatbázis táblában megadott hosszúság, akkor a Beszúrás sikertelen lesz, ez a függvény hamis értéket ad vissza, de a $wpdb->last_error nem lesz leíró üzenetre állítva. Biztosítania kell, hogy a beilleszteni kívánt adatok illeszkedjenek az adatbázisba – ne feltételezzük, hogy a MySql csonkolja az adatokat.

a csere után az AUTO_INCREMENT oszlophoz létrehozott azonosító a következővel érhető el:

$wpdb->insert_id

ez a függvény egy count értéket ad vissza az érintett sorok számának jelzésére. Ez a törölt és beillesztett sorok összege. Ha az egysoros csere száma 1, akkor egy sor került beillesztésre, és egyetlen sor sem lett törölve. Ha a számlálás nagyobb, mint 1, egy vagy több régi Sort töröltek az új sor beszúrása előtt. Lehetséges, hogy egy sor egynél több régi Sort cserél le, ha a táblázat több egyedi indexet tartalmaz, az új sor pedig a különböző egyedi indexek különböző régi sorainak értékeit duplikálja.

ez a függvény false értéket ad vissza, ha egy meglévő Sort nem lehet kicserélni, és egy új sort nem lehet beilleszteni.

példák

sor cseréje, az első érték a sorazonosító, a második a karakterlánc, a harmadik pedig a szám:

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

sorok frissítése

a táblázat egy sorának frissítése. False értéket ad vissza hiba esetén, vagy az érintett sorok számát, ha sikeres.

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

táblázat (karakterlánc) a frissítendő táblázat neve. adatok (tömb) frissítendő adatok (oszlopban => értékpárok). Mind a $data oszlopoknak, mind a $data értékeknek “raw” – nak kell lenniük (egyik sem lehet SQL megszökött). Ez azt jelenti, hogy ha GET vagy POST adatokat használ, akkor szükség lehet stripslashes() használatára, hogy elkerülje a perjeleket az adatbázisban. where (array) a WHERE záradékok megnevezett tömbje (oszlopban => értékpárok). Több záradék csatlakozik az ANDs-hez. Mind a $hol oszlopok, mind a $ahol az értékeknek “nyersnek”kell lenniük. format (array|string) (opcionális) formátumok tömbje, amelyet a $data egyes értékeihez kell leképezni. Ha karakterlánc, akkor ezt a formátumot fogja használni a $data összes értékéhez. where_format (array|string) (opcionális) formátumok tömbje, amelyet a $where értékekhez kell leképezni. Ha karakterlánc, akkor ezt a formátumot fogják használni a $where összes eleméhez.

lehetséges formátumértékek: % s mint string; %d mint egész (egész szám) és %f mint float. (További információkért lásd alább.) Ha elhagyjuk, az összes értéket $hol fogják kezelni húrok.

visszatérési értékek: Ez a függvény a frissített sorok számát adja vissza, vagy hamis, ha hiba van. Ne feledje, hogy ha a $adatok megegyeznek azzal, ami már szerepel az adatbázisban, akkor egyetlen sor sem frissül, így a 0 visszatér. Emiatt valószínűleg ellenőriznie kell a visszatérést hamis = = = $eredmény

példák

frissítsen egy sort, ahol az azonosító 1, az első oszlop értéke egy karakterlánc, a második oszlop értéke pedig egy szám:

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

figyelem: a %d nem tudja kezelni a vesszőértékeket – ha nem teljes számokat használ, használja a string/%s parancsot.

sorok törlése

a törlés funkció a WordPress 3.4.0-ban került hozzáadásra, és használható sorok törlésére egy táblázatból. A használat nagyon hasonlít az update and insert-hez. Ez visszaadja a Sorok száma frissítve, vagy hamis hiba.

használat

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

paraméterek

$tábla (karakterlánc) (kötelező) tábla neve. Alapértelmezett: Nincs $where (array) (kötelező) a WHERE záradékok megnevezett tömbje (oszlopban -> értékpárok). Több záradék csatlakozik az ANDs-hez. Mind a $where oszlopoknak, mind a $where értékeknek ‘raw’ – nak kell lenniük. Alapértelmezett: None $where_format (string/array) (opcionális) formátumok tömbje, amelyet a $where értékekhez kell leképezni. Ha egy karakterlánc, akkor ezt a formátumot fogják használni az összes elemhez a $where-ben. A formátum a ‘%d’, ‘%f’, ‘%s’ (egész szám, float, string; további információkért lásd alább). Ha nincs megadva, a $where összes értéke karakterláncként lesz kezelve, hacsak a wpdb::$field_types másként nem rendelkezik. Alapértelmezett: null

példák

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

általános lekérdezések futtatása

a query funkció lehetővé teszi bármilyen SQL lekérdezés végrehajtását a WordPress adatbázisban. Legjobban akkor használható, ha speciális, egyedi vagy más módon összetett SQL lekérdezésekre van szükség. További alapvető lekérdezéseket, például információk kiválasztását egy táblázatból, lásd a fenti wpdb függvényeket, például a get_results, get_var, get_row or get_col.

Általános szintaxis

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

lekérdezés (karakterlánc) a végrehajtani kívánt SQL lekérdezés.

ez a függvény egy egész számot ad vissza, amely jelzi az érintett/kiválasztott sorok számát A kiválasztás, beszúrás, törlés, frissítés stb. A CREATE, ALTER, TRUNCATE and DROP SQL utasításoknál (amelyek egész táblákat érintenek konkrét sorok helyett) ez a függvény TRUE értéket ad vissza siker esetén. MySQL hiba esetén a függvény FALSEértéket ad vissza. Ne feledje, hogy mivel mind a 0, mind a FALSE visszaadható sor lekérdezésekhez, óvatosnak kell lennie a visszatérési érték ellenőrzésekor. Használja az identity operátort ( = = = ), hogy ellenőrizze a hibákat (pl. false === $result), és hogy a sorok érintettek-e (pl. 0 === $result).

példák

törölje a ‘gargle’ metakulcsot és értéket a 13.bejegyzésből. (Hozzáadjuk a ‘felkészülés’ módszert, hogy megbizonyosodjunk arról, hogy nem illegális művelettel vagy illegális karakterekkel foglalkozunk):

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

végre WordPress által delete_post_meta().

állítsa a 15.oldal szülőjét a 7. oldalra.

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

a lekérdezések védelme az SQL injekciós támadások ellen

a WordPress SQL-menekülésének teljesebb áttekintését lásd: adatbázis-adatok érvényesítése. Ez egy kötelező olvasmány minden WordPress kód közreműködők és plugin szerzők.

az SQL lekérdezések összes adatának SQL-mentettnek kell lennie az SQL lekérdezés végrehajtása előtt, hogy megakadályozza az SQL injekciós támadásokat. A prepare módszer elvégzi ezt a funkciót a WordPress számára, amely támogatja mind a sprintf()-szerű, mind a vsprintf()-szerű szintaxist.

kérjük, vegye figyelembe: a 3.5, wpdb::a prepare() legalább 2 argumentumot hajt végre.

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

lekérdezés (karakterlánc) a végrehajtani kívánt SQL lekérdezés helyőrzőkkel (lásd alább). value_parameter (int / string / array) a helyettesítendő érték a helyőrzőben. Sok érték átadható egyszerűen több argumentum átadásával sprintf () – szerű módon. Alternatív megoldásként a második argumentum lehet egy tömb, amely tartalmazza az értékeket, mint a PHP vsprintf () függvényében. Ügyelni kell arra, hogy ne engedélyezze a felhasználó közvetlen bevitelét ehhez a paraméterhez, ami lehetővé tenné bármely lekérdezés tömbmanipulációját több helyőrzővel. Az értékek nem kerülhetők el az SQL-ből.

helyőrzők

a prepare lekérdezési paramétere elfogadja a sprintf()-szerű helyőrzőket. A %s (string), %d (integer) és %f (float) formátumok támogatottak. (A %s és %d helyőrzők a funkció 2.3-as verzióhoz való hozzáadása óta elérhetők, % f csak a 3.3-as verzió óta érhető el.) Bármely más % karakter elemzési hibákat okozhat, hacsak nem kerülik el őket. Az SQL karakterlánc-literálok összes % karakterét, beleértve a helyettesítő karaktereket is, dupla% – kal kell megszökni %%néven. Minden %d, % f és %s marad idézetlen a lekérdezési karakterláncban. Vegye figyelembe, hogy a %d helyőrző csak egész számokat fogad el, így nem adhatja át a vesszőértékekkel rendelkező számokat %d. ha vesszőértékekre van szüksége, használja %f lebegőpontos helyett.

példák

Add Meta key => érték pár “Harriet Adages” => “WordPress’ adatbázis felület, mint vasárnap reggel: könnyű.”a 10. posztra.

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

végre WordPress által add_meta().

ugyanaz a lekérdezés a vsprintf () – szerű szintaxis használatával.

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

vegye figyelembe, hogy ebben a példában az értékeket tömbbe csomagoljuk. Ez akkor lehet hasznos, ha nem tudjuk, hogy hány argumentumot kell átadnunk futásidőig.

vegye figyelembe, hogy nem kell aggódnia a karakterláncok idézése miatt. Ahelyett, hogy a változókat közvetlenül az SQL lekérdezésbe adná át, használjon %s helyőrzőt a karakterláncokhoz, %d helyőrzőt az egész számokhoz, és %f helyőrzőt az úszókhoz. Annyi értéket adhat át, amennyit csak akar, mindegyik új paraméterként a prepare() módszerben.

SQL hibák megjelenítése és elrejtése

a show_errors és a hide_errors parancsokkal be-és kikapcsolhatja a hibajavítást.

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

a legutóbbi lekérdezés által generált hibát (ha van ilyen) a print_errorgombbal is kinyomtathatja.

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

Megjegyzés: Ha WordPress Multisite rendszert futtat, akkor meg kell határoznia a DIEONDBERROR állandót, hogy az adatbázis hibái így jelenjenek meg:
<?php define( 'DIEONDBERROR', true ); ?>

Oszlopinformációk beszerzése

a legutóbbi lekérdezés eredményének oszlopaira vonatkozó információkat a get_col_info gombbal lehet letölteni. Ez akkor lehet hasznos, ha egy függvény olyan objektumot adott vissza, amelynek tulajdonságait nem ismeri. A függvény kiírja a kívánt információt a megadott oszlopból, vagy egy tömböt, amely a lekérdezés eredményének összes oszlopáról tartalmaz információkat, ha nincs megadva oszlop.

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

írja be (karakterlánc), hogy milyen információkat szeretne letölteni. A következő értékek bármelyikét felveheti (az ezSQL dokumentumokból vett lista). Alapértelmezett név.

  • Név – oszlop neve. Alapértelmezett.
  • táblázat – az oszlophoz tartozó táblázat neve
  • max_length – az oszlop maximális hossza
  • not_null – 1 ha az oszlop nem lehet NULL
  • primary_key – 1 ha az oszlop elsődleges kulcs
  • unique_key – 1 ha az oszlop egyedi kulcs
  • multiple_key – 1 ha az oszlop nem egyedi kulcs
  • numerikus-1 ha az oszlop numerikus
  • Blob – 1 ha az oszlop Blob
  • típus – az oszlop típusa
  • aláíratlan – 1 ha az oszlop aláíratlan
  • zerofill – 1 ha az oszlop nulla – töltött

offset (integer) adja meg azt az oszlopot, ahonnan információt szeretne letölteni (a 0 az első oszlop). Alapértelmezés szerint -1.

  • -1 – információk beolvasása az összes oszlopból. Kimenet tömbként. Alapértelmezett.
  • nem negatív egész szám-információk lekérése a megadott oszlopból (0 az első).

a Gyorsítótár törlése

az SQL eredmény gyorsítótárát a flush gombbal törölheti.

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

ez törli a $wpdb->last_result, $wpdb->last_query és $wpdb->col_infoértéket.

Osztályváltozók

$show_errors, hogy a hiba visszhangja be van-e kapcsolva. Alapértelmezés szerint igaz. $num_queries a végrehajtott lekérdezések száma. $last_query a legutóbb végrehajtott lekérdezés. $last_error a MySQL által generált legújabb hibaszöveg. $lekérdezések mentheti az adatbázisban futó összes lekérdezést és azok leállási idejét, ha a SAVEQUERIES állandót TRUE értékre állítja (ez az állandó alapértelmezés szerint FALSE). Ha a SAVEQUERIES igaz, akkor a lekérdezések ebben a változóban tömbként lesznek tárolva. $last_result a legfrissebb lekérdezési eredmények. $col_info a legfrissebb lekérdezési eredmények oszlopinformációi. Lásd: Oszlopinformációk Beszerzése. $insert_id ID, amelyet egy AUTO_INCREMENT oszlophoz generált a legutóbbi beszúrási lekérdezés. $num_rows az utolsó lekérdezés által visszaadott sorok száma. $előtag a webhelyhez rendelt WordPress tábla előtag. $base_prefix az eredeti előtag meghatározása szerint wp-config.php. Több webhely esetén: használja, ha az előtagot a blogszám hozzáfűzése nélkül szeretné megkapni.

Multi-Site változók

ha több webhelyet használ, akkor a következőkhöz is hozzáférhet:

$blogid az aktuális webhely (blog) azonosítója. $siteid az aktuális hálózat azonosítója (korábban “webhely”). A WordPress jelenleg csak egy hálózatot támogat több webhely telepítésekor, de ez a jövőben megváltozhat. További információkért lásd az alábbiakat:

  • WordPress: különbség a site_id és a blog_id között?
  • http://stackoverflow.com/a/4189358/1924128 – egy másik jó válasz ugyanarra a kérdésre.

táblák

a WordPress adatbázis táblákra könnyen hivatkozhatunk a wpdb osztályban.

$hozzászólás a táblázat Hozzászólások. $postmeta a Meta tartalom (más néven egyéni mezők) táblázat. $megjegyzések a Megjegyzések táblázat. $commentmeta a táblázat további megjegyzésinformációkat tartalmaz. $termmeta a termmeta táblázat a meta értékeket tartalmazza. $feltételek a feltételek táblázat tartalmazza a’ leírás ‘ kategóriák, Link kategóriák, címkék. $term_taxonomy a term_taxonomy táblázat leírja a különböző taxonómiákat (kifejezések osztályait). A kategóriák, a Linkkategóriák és a címkék taxonómiák. $term_relationships a term relationships tábla a kifejezés és az adott kifejezést használó objektum közötti kapcsolatot tartalmazza, ami azt jelenti, hogy ez a fájl az egyes bejegyzésekhez használt kategóriákra mutat. $felhasználók a táblázat a felhasználók. $usermeta a usermeta tábla további felhasználói információkat tartalmaz, például beceneveket, leírásokat és engedélyeket. $linkek a linkek táblázata. $opciók az Opciók táblázat.

többhelyes táblák

ezeket a táblákat csak többhelyes telepítésekben használják.

$blogok a blogok táblázat a hálózaton belül létrehozott különálló blogok (webhelyek) listáját tartalmazza. $feliratkozások a feliratkozási táblázat. $webhely a Webhelytábla tartalmazza a telepítés során létrehozott hálózatok listáját (korábban a WPMU-ban “webhelyek” néven ismert) (általában csak egy webhely szerepel ebben a táblázatban). $sitemeta a hálózati beállítások (Site Meta) táblázat tartalmazza azokat a beállításokat, amelyek a teljes többhelyes telepítésre alkalmazhatók. $sitecategories a Webhelykategóriák táblázat. $registration_log a regisztrációs napló tábla. $blog_versions a Blog verziók táblázat.

forrás fájl

wpdb() található wp-includes/wp-db.php.

Related

  • tag funkció: wpdb::esc_like() – Escape like utasítások használat előtt az SQL.

cikkek

  • cikk: a hurok – alapvető áttekintés a lekérdezés használatáról a WordPress hurokban.
  • cikk: Lekérdezés áttekintése-annak meghatározása, hogy mely lekérdezések generálják a WordPress-t.
  • cikk: a lekérdezések testreszabása Hook segítségével
  • cikk: Cikkek megtekintése MySQL lekérdezés egyéni
  • cikk: speciális lekérdezések készítése Taxonómiákon
  • cikk: egyedi lekérdezés készítése Offset és lapozás segítségével

Kóddokumentáció

  • osztály: wp_query – a wp_query osztály részletes áttekintése
  • class: Wp_comment_query – osztály a megjegyzésekkel kapcsolatos lekérdezésekhez
  • class: Wp_user_query-osztály a felhasználókkal kapcsolatos lekérdezésekhez
  • objektum: $wpdb – áttekintés a $wpdb objektum használatáról
  • Function: set_query_var()
  • Function: get_query_var()
  • Function: query_posts() – hozzon létre további egyéni lekérdezést
  • Function: get_post() – vegyen egy elem azonosítóját, és adja vissza az adott cikk rekordjait az adatbázisban
  • function: get_posts() – egy speciális funkció, amely visszaadja egy tömb tételek
  • function: get_pages() – egy speciális funkció, amely visszaadja egy tömb oldalak
  • function: have_posts() – olyan feltétel, amely meghatározza, hogy a lekérdezés visszaadott – e egy cikket
  • funkció: the_post () – a ciklus automatikus beállítására szolgál egy lekérdezés után
  • funkció: visszatekerés_posts () – törli az aktuális hurkot
  • funkció: setup_postdata () – egyetlen lekérdezés eredményének adatait állítja be egy hurokban
  • funkció: wp_reset_postdata () – visszaállítja az előző lekérdezést (általában egy hurok után egy másik cikluson belül)
  • funkció: wp_reset_query()
  • funkció: is_main_query () – biztosítja, hogy a megváltoztatott lekérdezés csak a fő lekérdezés legyen
  • Action Hook: pre_get_posts-módosítsa a WordPress lekérdezéseket a végrehajtás előtt
  • Action Hook: the_post-módosítsa a post objektumot a lekérdezés után
  • Filter Hook: found_posts – megváltoztatja az objektum értékét found_posts WP_Query

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.

Previous post a gyerekek etetése
Next post Chicago White Sox: Brad Hand nem lenne rossz pick up