سؤال

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

ولدي 5 قواعد البيانات، وتحتاج إلى الاستيلاء على البيانات من كل منهم خلال روتين الصيانة. لكل من قواعد البيانات، ولدي ملف خارجي الذي يحتوي على كافة التعليمات البرمجية اتصال ديسيبل وهو ما تدرج في صفحتي.

وهذا يشمل تبدو مثل هذا

$SGcon = mysql_connect("localhost","root","");

if (!$SGcon)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("sGopen", $SGcon);

للكل قاعدة بيانات I توفير varaible مختلفة، وبالتالي فإن قاعدة البيانات القادمة ستكون

$PTcon = mysql_connect("localhost","root","");

if (!$PTcon)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("pTsecond", $PTcon);

وبعد ذلك عندما ندعو الاستعلام الخاص بي، وأنا استخدم

 
mysql_query($getQuery,  $PTcon);
mysql_query($secondQuery, $SGcon);

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

هل هناك طريقة أفضل بالنسبة لي للتبديل اتصال قاعدة البيانات لاستخدامها؟

وهناك الكثير من جيئة وذهابا بين قواعد البيانات كما أنا بمقارنة البيانات من ديسيبل واحد للبيانات في بلد آخر، لذلك أنا أحاول أن تكون فعالة مع هذا أيضا.

والشكر بيت

هل كانت مفيدة؟

المحلول

وافتراضيا، إذا قمت بتمرير نفس الحجج ل mysql_connect بمثابة دعوة سابقة انها سوف تعود اتصال مؤقتا إذا كان متوفرا، بدلا من إنشاء واحدة جديدة. لذلك كل من الاستفسارات تعمل ضد أيهما قاعدة البيانات التي مرت آخر من mysql_select_db.

واجتياز new_link=true سوف تجنب هذا السلوك، على الرغم من اتصالات قاعدة البيانات يمكن أن تكون مكلفة لذلك يجب عليك محاولة للحفاظ على عدد قليل من مفتوحة ممكن في حدود المعقول.

ووشرح مفصل عن new_link:

<اقتباس فقرة>   

إذا تم إجراء مكالمة ثانية ل   mysql_connect() مع نفسه   الحجج، لا ارتباط جديد يكون   أنشئت، ولكن بدلا من ذلك، على الرابط   معرف الرابط فتح بالفعل   سيتم إرجاع. وnew_link   المعلمة تعديل هذا السلوك و   يجعل mysql_connect() دائما فتح   رابط جديد، حتى لو كان mysql_connect()   دعا قبل مع نفسه   المعلمات. في الوضع الآمن SQL، وهذا   يتم تجاهل المعلمة.

نصائح أخرى

واعتقد انه اذا قمت بإغلاق اتصال ديسيبل في ما بين كل الاستعلام سوف يحل المشكلة.

وإذا كنت تفعل الكثير من يقارن بين قواعد البيانات، ثم أود أن مجرد استخدام 1 حدد بيان للاستعلام عن قواعد البيانات في وقت واحد.

ما لم يكن هناك سبب محدد، وتريد للحفاظ على اتصالات ديسيبل عند أدنى مستوى ممكن. وأود أن استخدام اتصال واحد، والكتابة وسيلة لتوسيع وظائف طريقة mysql_query (). هل يمكن تمريرها سلسلة SQL، واسم الجدول ثم باستدعاء الدالة mysql_select_db ($ TABLENAME) وإعادة يستخدم-في نفس الصدد لمعالجة SQL.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top