मैं wpdb
दूसरे डेटाबेस से जुड़ना चाहता हूं । मैं उदाहरण कैसे बनाऊँ और इसे डेटाबेस का नाम / उपयोगकर्ता नाम / पासवर्ड पास करूँ?
धन्यवाद
मैं wpdb
दूसरे डेटाबेस से जुड़ना चाहता हूं । मैं उदाहरण कैसे बनाऊँ और इसे डेटाबेस का नाम / उपयोगकर्ता नाम / पासवर्ड पास करूँ?
धन्यवाद
जवाबों:
हाँ, यह मुमकिन है।
Wpdb ऑब्जेक्ट का उपयोग किसी भी डेटाबेस को एक्सेस करने और किसी भी टेबल को क्वेरी करने के लिए किया जा सकता है। बिल्कुल Wordpress संबंधित होने की कोई आवश्यकता नहीं है, जो बहुत दिलचस्प है।
लाभ सभी wpdb वर्गों और कार्यों जैसे get_results
, आदि का उपयोग करने की क्षमता है ताकि पहिया को फिर से आविष्कार करने की आवश्यकता न हो।
ऐसे:
$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
। लेकिन फायरिंग से पहले $ wpdb-> get_results मेथड में आपको wp-load.php को शामिल करना होगा: require_once('/your/wordpress/wp-load.php');
$mydb->set_prefix('wp_');
वर्डप्रेस में एक दूसरे डेटाबेस से कनेक्ट करना आसान है, आप बस WPDB वर्ग का एक नया उदाहरण बनाते हैं और इसे उसी तरह उपयोग करते हैं जिस तरह से आप मानक $ wpdb उदाहरण का उपयोग करेंगे जो हम सभी जानते हैं और प्यार करते हैं।
दूसरे डेटाबेस की मानें तो मुख्य WP के समान लॉगिन जानकारी है जिसे आप लॉगिन जानकारी को हार्डकोड करने से बचने के लिए wp-config.php से पूर्वनिर्धारित स्थिरांक का भी उपयोग कर सकते हैं।
/**
* 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_');
किसी ने भी यह नहीं कहा है तो मुझे लगा कि मैं इससे भी आसान तरीका जोड़ूंगा।
जब तक आपके अतिरिक्त डेटाबेस में एक ही उपयोगकर्ता / पास का विवरण है, इसे अपने वर्डप्रेस डेटाबेस के रूप में एक्सेस करने के लिए आप इस से पहले टेबल नाम से पहले डेटाबेस के नाम का उपयोग कर सकते हैं।
$query = $wpdb->prepare('SELECT * FROM dbname.dbtable WHERE 1');
$result = $wpdb->get_results($query);
SELECT
। आप डेटा नहीं डाल सकते।
जब ये काम करेंगे, तो आप "अन्य" कस्टम सुविधाओं जैसे कि get_post_custom और WordPress प्रश्नों का उपयोग करने की क्षमता खो देंगे। सरल उपाय है
$wpdb->select('database_name');
जो डेटाबेस सिस्टम-वाइड (एक mysql select_db) को बदलता है। अगर आप सिर्फ एक साधारण क्वेरी बनाना चाहते हैं, तो डेटाबेस.table पद्धति काम करती है, लेकिन यदि आप किसी अन्य वर्डप्रेस ब्लॉग का उपयोग करना चाहते हैं, तो आप चुन सकते हैं। आपको बस इसे वापस करने की आवश्यकता होगी जब आप कर रहे हों या आपका ब्लॉग अजीब चीजें कर सकता है।
wp_get_post_terms()
से नए चयनित DB का उपयोग नहीं लगता है ?? मेरे द्वारा किए गए हर दूसरे फ़ंक्शन (जैसे get_post_meta()
, get_posts()
आदि) ठीक wp_get_post_terms()
काम करने लगता है, लेकिन DB_NAME
डेटाबेस की ओर काम करता है। कोई विचार?
मैं अभी तक टिप्पणी नहीं कर सकता, लेकिन मैं वाडीह एम के जवाब (जो बहुत अच्छा है) पर विस्तार करना चाहता था।
WP का डेटाबेस वर्ग जस्टिन विन्सेंट के ezSQL का एक अनुकूलित संस्करण है। यदि आप इंटरफ़ेस पसंद करते हैं और आप एक ऐसी साइट करना चाहते हैं जो वर्डप्रेस-आधारित नहीं है, तो आप इसे देखना चाहते हैं: http://justinvincent.com/ezsql
मैं $wpdb
मूल साइट से दूसरे ब्लॉग डेटाबेस से कनेक्ट करने के लिए उपयोग कर रहा था, जिसमें दो ब्लॉग अपडेट करने की आवश्यकता थी। मैं $wpdb->select($dbname, $dbh)
दूसरे डेटाबेस का चयन करता था, लेकिन मुझे अभी भी पहले डेटाबेस से परिणाम मिल रहे थे।
मैंने wp_cache_flush()
दूसरे डेटाबेस पर WP फ़ंक्शन को कॉल करने से पहले वर्डप्रेस कैश को खाली करने के लिए कॉल करके समस्या का समाधान किया ।