متى وكيفية استخدام الخلية استعلامات متعددة مع PHP (PDO)

StackOverflow https://stackoverflow.com/questions/690744

  •  22-08-2019
  •  | 
  •  

سؤال

ما هي فوائد استخدام متعددة الخلية الاستفسارات في بيان، بخلاف للحد من التعليمات البرمجية.

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

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

المحلول

وبغض النظر عن أي قاعدة البيانات التي تستخدم، يمكن أن يكون أكثر فعالية لوضع الاستفسارات متعددة في عبارة واحدة. إذا قمت بإجراء الاستعلامات بشكل منفصل، لديك لإجراء مكالمة إلى قاعدة البيانات عبر الشبكة (أو على الأقل، بين العمليات إذا كان على نفس الجهاز)، والحصول على اتصال بها (بما في ذلك autheticating)، وتمرير في الاستعلام، وعودة resultset و، والإفراج عن الاتصال لكل الاستعلام.

وحتى إذا كنت تستخدم تجمع الاتصالات، كنت لا تزال تمر المزيد من طلبات ذهابا وإيابا مما هو ضروري.

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

لمثال آخر، والعديد من التطبيقات إلى ملء قوائم (مثل لdropdownlists) عندما بدء التشغيل. يمكن أن يكون هناك عدد من الاستفسارات. يمكن أداء كل منهم في مكالمة واحدة تسريع وقت بدء التشغيل.

نصائح أخرى

وmysql_query () لا يدعم استعلامات متعددة. ومع ذلك، هناك بعض الحلول:

<لأ href = "http://www.dev -explorer.com/articles/multiple-mysql-queries "يختلط =" noreferrer "> http://www.dev-explorer.com/articles/multiple-mysql-queries
<لأ href = "http://php.net/function.mysql-query" يختلط = "noreferrer"> http://php.net/function.mysql-query

وكنت أقوم ببعض الأبحاث الليلة وتعثرت عبر هذا الموضوع. أي من الإجابات أعلاه أن تقدم حلا ناجعا لهذه المشكلة بسيطة.

وباستخدام نهج OO، يمكنك تنفيذ عبارات الاستعلام متعددة في اتصال واحد باستخدام طريقة multi_query ().

$db_connection->multi_query($query);

استعلامات ينبغي تشكيل جيدا ومفصولة بفواصل منقوطة ->.

وPHP دليل للحصول على مزيد من التفاصيل حول كيفية معالجة البيانات SELECT

واستفسارات متعددة على نفس المكالمة هي مفيدة خصوصا عندما كنت بحاجة إلى العمل مع متغيرات جلسة والجداول المؤقتة:

select somecol, @somevar := group_concat( distinct somecol2 separator '|')
from sometbl
where
    somecol LIKE "fueh"
group by somecol;

select somecol2
from  sometbl
where
    somecol LIKE "nyan"
and
    vc_wp regexp concat( '(', @somevar, ')' )
order by somecol;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top