wpdb
Başka bir veritabanına bağlanmak istiyorum . Örneği nasıl oluşturabilirim ve veri tabanı adını / kullanıcı adı / şifresini nasıl iletebilirim?
Teşekkürler
wpdb
Başka bir veritabanına bağlanmak istiyorum . Örneği nasıl oluşturabilirim ve veri tabanı adını / kullanıcı adı / şifresini nasıl iletebilirim?
Teşekkürler
Yanıtlar:
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 benzeri işlevleri kullanma becerisidir get_results
, 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>";
global $wpdb
. Fakat $ wpdb-> get_results yöntemini kullanmadan önce, wp-load.php dosyasını şu şekilde eklemelisiniz: require_once('/your/wordpress/wp-load.php');
$mydb->set_prefix('wp_');
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 varsayalım, 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);
$second_db->set_prefix('wp_');
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);
SELECT
. Veri ekleyemezsiniz.
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.
wp_get_post_terms()
yeni seçilen DB kullanmıyor gibi görünüyor? Çalıştığım diğer her işlev (gibi get_post_meta()
, get_posts()
vb.) Gayet iyi çalışıyor, ancak veritabanına wp_get_post_terms()
doğru çalışıyor gibi görünüyor DB_NAME
. Herhangi bir fikir?
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
$wpdb
İki blogu güncellemesi gereken bir ana siteden ikinci bir blog veritabanına bağlanmak için kullanmakta zorlanıyordum . Kullandığım $wpdb->select($dbname, $dbh)
ikinci veritabanını seçmek için, ama yine de ilk veritabanından sonuç vermeye başlamıştı.
wp_cache_flush()
İkinci veritabanında WP işlevlerini çağırmadan önce WordPress önbelleğini temizlemek için arayarak sorunu çözdüm.