PDOStatement::fetchAll - إرجاع مصفوفة تحتوي على جميع الصفوف في مجموعة النتائج (PHP 5 >= 5.1.0، PECL pdo >= 0.1.0)
صفيف PDOStatement::fetchAll ([ int $fetch_style [, مختلط $fetch_argument [, array $ctor_args = array() ]]] )
fetch_style
التحكم في كيفية إرجاع السطر التالي إلى المتصل. يجب أن تكون هذه القيمة إحدى سلسلة الثوابت PDO::FETCH_*، والقيمة الافتراضية هي قيمة PDO::ATTR_DEFAULT_FETCH_MODE (القيمة الافتراضية هي PDO::FETCH_BOTH).
لإرجاع مصفوفة تحتوي على كافة قيم عمود واحد في مجموعة النتائج، حدد PDO::FETCH_COLUMN. احصل على العمود المطلوب عن طريق تحديد معلمة فهرس العمود.
للحصول على القيمة الفريدة لعمود واحد في مجموعة النتائج، تحتاج إلى تعديل البت OR PDO::FETCH_COLUMN وPDO::FETCH_UNIQUE.
لإرجاع مصفوفة اقترانية بقيم مجمعة وفقًا للعمود المحدد، تحتاج إلى تعديل البت OR PDO::FETCH_COLUMN وPDO::FETCH_GROUP.
fetch_argument هذه المعلمة لها معاني مختلفة اعتمادًا على قيمة معلمة fetch_style:
PDO::FETCH_COLUMN
: إرجاع العمود المحدد المفهرس بدءًا من 0.
PDO::FETCH_CLASS
: إرجاع مثيل للفئة المحددة، وتعيين أعمدة كل صف إلى اسم السمة المقابلة في الفئة.
PDO::FETCH_FUNC
: تمرير أعمدة كل صف كمعلمات إلى الوظيفة المحددة وإرجاع النتيجة بعد استدعاء الوظيفة.
ctor_args عندما تكون المعلمة fetch_style هي PDO::FETCH_CLASS، تكون معلمات مُنشئ الفئة المخصصة.
تقوم الدالة PDOStatement::fetchAll() بإرجاع مصفوفة تحتوي على كافة الصفوف المتبقية في مجموعة النتائج. كل صف من هذه المصفوفة هو إما مصفوفة من قيم الأعمدة أو كائن له خصائص تتوافق مع اسم كل عمود.
سيؤدي استخدام هذا الأسلوب للحصول على مجموعات نتائج كبيرة إلى وضع عبئًا ثقيلًا على النظام وقد يستهلك موارد كبيرة للشبكة. بدلاً من استرداد كافة البيانات ثم تشغيلها باستخدام PHP، فكر في استخدام خدمة قاعدة بيانات لمعالجة مجموعة النتائج. على سبيل المثال، استخدم جملتي WHERE وORDER BY في SQL لتأهيل النتائج قبل استرداد البيانات ومعالجتها من خلال PHP.
<?php$sth = $dbh->prepare("SELECT name, color FROM Fruit");$sth->execute();/* الحصول على كافة الصفوف المتبقية في مجموعة النتائج*/print("جلب كافة الصفوف الصفوف المتبقية في مجموعة النتائج:n");$result = $sth->fetchAll();print_r($result);?>
إخراج المثال أعلاه هو:
جلب كافة الصفوف المتبقية في مجموعة النتائج:Array( [0] => Array ( [NAME] => pear [0] => pear [COLOUR] => green [1] => green ) [1] => المصفوفة ( [NAME] => بطيخ [0] => بطيخ [COLOUR] => وردي [1] => وردي ))
يوضح المثال التالي كيفية إرجاع كافة قيم عمود واحد من مجموعة النتائج، على الرغم من أن عبارة SQL نفسها قد ترجع عدة أعمدة لكل صف.
<?php$sth = $dbh->prepare("SELECT name, color FROM Fruit");$sth->execute();/* احصل على كافة القيم في العمود الأول*/$result = $sth-> fetchAll(PDO::FETCH_COLUMN, 0);var_dump($result);?>
إخراج المثال أعلاه هو:
Array(3)( [0] => سلسلة(5) => تفاحة [1] => سلسلة(4) => كمثرى [2] => سلسلة(10) => بطيخ)
يوضح المثال التالي كيفية إرجاع مصفوفة ترابطية مجمعة حسب قيم عمود محدد في مجموعة النتائج. تحتوي المصفوفة على ثلاثة مفاتيح: تحتوي مصفوفة التفاح والكمثرى التي تم إرجاعها على لونين مختلفين، بينما تحتوي مصفوفة البطيخ التي تم إرجاعها على لون واحد فقط.
<?php$insert = $dbh->prepare("INSERT INTO Fruit(name, color) VALUES (?, ?)");$insert->execute(array('apple', 'green'));$insert ->execute(array('pear', 'yellow'));$sth = $dbh->prepare("حدد الاسم واللون من" Fruit");$sth->execute();/* المجموعة بناءً على العمود الأول*/var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));?>
إخراج المثال أعلاه هو:
array(3) { ["apple"]=> array(2) { [0]=> string(5) "أخضر" [1]=> string(3) "أحمر" } ["كمثرى"]=> مصفوفة (2) { [0]=> سلسلة(5) "أخضر" [1]=> سلسلة(6) "أصفر" } ["بطيخ"]=> array(1) { [0]=> سلسلة(5) "أخضر" }}
يوضح المثال التالي سلوك أسلوب الاستحواذ PDO::FETCH_CLASS.
<?phpclass Fruit { public $name; public $colour;}$sth = $dbh->prepare("SELECT name, color FROM Fruit");$sth->execute();$result = $sth->fetchAll( PDO::FETCH_CLASS, "fruit");var_dump($result);?>
إخراج المثال أعلاه هو:
array(3) { [0]=> كائن(فاكهة)#1 (2) { ["اسم"]=> سلسلة(5) "تفاحة" ["لون"]=> سلسلة(5) "أخضر" } [ 1]=> كائن(فاكهة)#2 (2) { ["اسم"]=> سلسلة(4) "كمثرى" ["لون"]=> سلسلة(6) "أصفر" } [2]=> كائن( الفاكهة)#3 (2) { ["name"]=> string(10) "بطيخ" ["colour"]=> string(4) "وردي" }}
يوضح المثال التالي سلوك الحصول على النمط PDO::FETCH_FUNC.
<?phpfunction Fruit($name, $colour) { return "{$name}: {$colour}";}$sth = $dbh->prepare("SELECT name, color FROM Fruit");$sth->تنفيذ ();$result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");var_dump($result);?>
إخراج المثال أعلاه هو:
array(3) { [0]=> string(12) "تفاحة: أخضر" [1]=> سلسلة(12) "كمثرى: أصفر" [2]=> سلسلة(16) "بطيخ: وردي"}