it-swarm.asia

Wpdb kullanma

wpdb dosyasını başka bir veritabanına bağlamak istiyorum. Örneği nasıl oluşturabilirim ve veri tabanı adını/kullanıcı adı/şifresini nasıl iletebilirim?

Teşekkürler

80
Wadih M.

Evet mümkün.

Wpdb nesnesi herhangi bir veritabanına erişmek ve herhangi bir tabloyu sorgulamak için kullanılabilir. Kesinlikle Wordpress ile ilgili olmak gerekmez, ki bu çok ilginç.

Bunun yararı, tüm wpdb sınıflarını ve get_results, vb. Gibi işlevleri kullanma becerisidir, böylece tekerleği yeniden icat etmeye gerek kalmaz.

İşte nasıl:

$mydb = new wpdb('username','password','database','localhost');
$rows = $mydb->get_results("select Name from my_table");
echo "<ul>";
foreach ($rows as $obj) :
   echo "<li>".$obj->Name."</li>";
endforeach;
echo "</ul>";
133
Wadih M.

WordPress'te ikinci bir veritabanına bağlanmak kolaydır, sadece WPDB sınıfının yeni bir örneğini oluşturup, hepimizin bildiği ve sevdiğimiz standart $ wpdb örneğini kullandığınız gibi kullanırsınız.

İkinci veritabanının ana WP ile aynı giriş bilgisine sahip olduğunu varsayarsak, giriş bilgilerinin kodlanmasını önlemek için wp-config.php adresinden önceden tanımlanmış sabitleri bile kullanabilirsiniz.

/**
 * Instantiate the wpdb class to connect to your second database, $database_name
 */
$second_db = new wpdb(DB_USER, DB_PASSWORD, $database_name, DB_Host);
/**
 * Use the new database object just like you would use $wpdb
 */
$results = $second_db->get_results($your_query);
29
jerclarke

kimse bunu söylemedi bu yüzden daha kolay bir yol ekleyeceğimi düşündüm ..

ek veritabanınız, wordpress veritabanınızla erişmek için aynı kullanıcı/şifre detaylarına sahip olduğu sürece, bunun gibi tablo adından önce veritabanı adını kullanabilirsiniz.

$query = $wpdb->prepare('SELECT * FROM dbname.dbtable WHERE 1');
$result = $wpdb->get_results($query);
21
CommentLuv

Henüz yorum yapamam, ama Wadih M.'nin cevabını genişletmek istedim (ki bu harika).

WP'nin veritabanı sınıfı, Justin Vincent'ın ezSQL'ine özel bir sürümüdür. Arabirimi seviyorsanız ve WordPress tabanlı olmayan bir site yapmak istiyorsanız, siteyi incelemek isteyebilirsiniz: http://justinvincent.com/ezsql

7
gabrielk

Bunlar işe yarayacak olsa da, get_post_custom ve wordpress sorguları gibi "diğer" özel özellikleri kullanma yeteneğinizi kaybedeceksiniz. Basit çözüm

$wpdb->select('database_name');

bu sistem genelinde veritabanı değiştirir (bir mysql select_db). Database.table yöntemi yalnızca basit bir sorgu yapmak istiyorsanız çalışır, ancak başka bir wordpress bloguna erişmek istiyorsanız select'i kullanabilirsiniz. Tamamladığınızda geri değiştirmeniz yeterli olacaktır, aksi halde blogunuz garip şeyler yapabilir.

6
user4533

İki blogu güncellemesi gereken bir ana siteden ikinci bir blog veritabanına bağlanmak için $wpdb kullanmakta zorlanıyordum. İkinci veritabanını seçmek için $wpdb->select($dbname, $dbh) işlevini kullandım, ancak hala ilk veritabanından sonuçlar alıyordum.

İkinci veritabanında WP işlevlerini çağırmadan önce WordPress önbelleğini temizlemek için wp_cache_flush() işlevini arayarak sorunu çözdüm.

4
Matt