it-swarm.asia

استخدام wpdb للاتصال بقاعدة بيانات منفصلة

أريد توصيل wpdb بقاعدة بيانات أخرى. كيف يمكنني إنشاء مثيل وتمريره اسم قاعدة البيانات/اسم المستخدم/كلمة المرور؟

شكر

80
Wadih M.

انه من الممكن.

يمكن استخدام كائن wpdb للوصول إلى أي قاعدة بيانات والاستعلام عن أي جدول. بالتأكيد لا حاجة إلى أن تكون وورد ذات الصلة ، وهو أمر مثير للاهتمام للغاية.

الفائدة هي القدرة على استخدام جميع فئات ووظائف 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>";
133
Wadih M.

الاتصال بقاعدة بيانات ثانية سهل في WordPress ، يمكنك ببساطة إنشاء مثيل جديد لفئة 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);
29
jerclarke

لم يقل أحد هذا حتى ظننت أنني سأضيف طريقة أسهل ..

طالما أن قاعدة البيانات الإضافية الخاصة بك تحتوي على نفس تفاصيل المستخدم/المرور للوصول إليها كقاعدة بيانات وورد الخاصة بك ، يمكنك استخدام اسم قاعدة البيانات قبل اسم الجدول مثل هذا

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

لا أستطيع التعليق بعد ، لكنني أردت أن أتوسع في إجابة وديع م.

فئة قاعدة بيانات WP هي نسخة مخصصة من ezSQL لجوستين فنسنت. إذا كنت ترغب في الواجهة وتريد إجراء موقع لا يستند إلى WordPress ، فقد ترغب في التحقق من ذلك: http://justinvincent.com/ezsql

7
gabrielk

بينما ستنجح هذه ، ستفقد القدرة على استخدام الميزات المخصصة "الأخرى" مثل get_post_custom واستعلامات وورد. الحل البسيط هو

$wpdb->select('database_name');

الذي يغير قاعدة البيانات على مستوى النظام (mysql select_db). تعمل طريقة database.table إذا كنت ترغب فقط في إجراء استعلام بسيط ، ولكن إذا كنت ترغب في الوصول إلى مدونة وورد أخرى يمكنك استخدامها. ستحتاج فقط إلى تغييره مرة أخرى عند الانتهاء أو قد تفعل مدونتك أشياء غريبة.

6
user4533

كنت أواجه صعوبة في استخدام $wpdb للاتصال بقاعدة بيانات مدونة ثانية من موقع أصل يحتاج إلى تحديث مدونتين. لقد استخدمت $wpdb->select($dbname, $dbh) لتحديد قاعدة البيانات الثانية ، لكنني ما زلت أحصل على نتائج من قاعدة البيانات الأولى.

لقد قمت بحل المشكلة عن طريق استدعاء wp_cache_flush() لمسح ذاكرة التخزين المؤقت WordPress قبل استدعاء WP الدالات في قاعدة البيانات الثانية.

4
Matt