اذهب إلى المحتوى

السؤال

نشر

السلام عليكم اواجه مشكل في التعامل مع لغة Sql ب PDO حيث انه عند تمرير اي امر Sql في PDO لايستجيب الامر وعند البحث في Google اجد ان الخاصية fetch تتغير واحيانا تصبح fetchAll فا ارجو شرح لهده الخاصية واستعمالاتها وارجو كدلك كتاب او موقع يتعمق في الامر بالعربي وشكرا لكل من افادني

Recommended Posts

  • 1
نشر

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

أما بالنسبة للفرق بين fetch , fetchAll فهو بسيط جداً:

يقوم التابع fetch بإعادة سطر واحد فقط (أول سطر) من قاعدة البيانات.

مثال:

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

print("استعادة أول نتيجة من جدول قاعدة البيانات");
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);

وسيكون الناتج بشكل مصفوفة الحقل المفتاح فيها هو اسم العمود في قاعدة البيانات وقيمته هي قيمة العنصر نفسه:

Array
(
    [name] => apple
    [colour] => red
)

أما التابع fetchAll: يقوم بإعادة مصفوفة فيها جميع الأسطر (النتائج) الموجودة في قاعدة البيانات.

مثال:


<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

print("استعادة اسم ولون جميع الفواكه الموجودة في جدول قاعدة البيانات");
$result = $sth->fetchAll();
print_r($result);
?>

وسيكون الناتج ضمن مصفوفة بالشكل التالي:

Array
(
    [0] => Array
        (
            [name] => apple
            [0] => apple
            [colour] => red
            [1] => red
        )

    [1] => Array
        (
            [name] => pear
            [0] => pear
            [colour] => green
            [1] => green
        )

    [2] => Array
        (
            [name] => watermelon
            [0] => watermelon
            [colour] => pink
            [1] => pink
        )

)

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

  • 0
نشر
بتاريخ 1 ساعة قال Sam Ahw:

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

أما بالنسبة للفرق بين fetch , fetchAll فهو بسيط جداً:

يقوم التابع fetch بإعادة سطر واحد فقط (أول سطر) من قاعدة البيانات.

مثال:


<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

print("استعادة أول نتيجة من جدول قاعدة البيانات");
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);

وسيكون الناتج بشكل مصفوفة الحقل المفتاح فيها هو اسم العمود في قاعدة البيانات وقيمته هي قيمة العنصر نفسه:


Array
(
    [name] => apple
    [colour] => red
)

أما التابع fetchAll: يقوم بإعادة مصفوفة فيها جميع الأسطر (النتائج) الموجودة في قاعدة البيانات.

مثال:



<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

print("استعادة اسم ولون جميع الفواكه الموجودة في جدول قاعدة البيانات");
$result = $sth->fetchAll();
print_r($result);
?>

وسيكون الناتج ضمن مصفوفة بالشكل التالي:


Array
(
    [0] => Array
        (
            [name] => apple
            [0] => apple
            [colour] => red
            [1] => red
        )

    [1] => Array
        (
            [name] => pear
            [0] => pear
            [colour] => green
            [1] => green
        )

    [2] => Array
        (
            [name] => watermelon
            [0] => watermelon
            [colour] => pink
            [1] => pink
        )

)

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

شكرا اخي على الشرح الأكثر من ممتاز لكن لدي استفسار اخر في بعض الحالات ترفق بها تعليمات اضافية مثلا setFetchMode(PDO::FETCH_ASSOC) فما هو دور set هنا ومالفرق اذا أضفنا set او ازلناها

وأحيانا نفس الخاصية يتغير محتواها إلى PDO::FETCH_COLUMN واخرى PDO::FETCH_NUM واظن ان ان لها اكثر من نمط فإن كان بالإمكان تقديم شرح لهذه الأنماط وانماط أخرى لم اذكرها وجزاك الله خيرا وزادك علما 

  • 1
نشر
بتاريخ 10 ساعات قال Seyid Ahmed Khessam:

شكرا اخي على الشرح الأكثر من ممتاز لكن لدي استفسار اخر في بعض الحالات ترفق بها تعليمات اضافية مثلا setFetchMode(PDO::FETCH_ASSOC) فما هو دور set هنا ومالفرق اذا أضفنا set او ازلناها

وأحيانا نفس الخاصية يتغير محتواها إلى PDO::FETCH_COLUMN واخرى PDO::FETCH_NUM واظن ان ان لها اكثر من نمط فإن كان بالإمكان تقديم شرح لهذه الأنماط وانماط أخرى لم اذكرها وجزاك الله خيرا وزادك علما 

يقوم التابع setFetchMode بضبط وضع جلب البيانات، فيمكنك التحكم بطريقة جلب هذه البيانات لاستخدامها لاحقاً في شيفرتك البرمجية من خلال أنماط عديدة ومنها:

  • PDO::FETCH_ASSOC والتي تقوم بجلب البيانات وفهرستها اعتماداً على اسماء الأعمدة في قاعدة البيانات
  • PDO::FETCH_BOTH الافتراضية والتي تقوم بجلب البيانات وفهرستها ضمن مصفوفة من اسماء الأعمدة والقيم.
  • PDO::FETCH_BOUND تعيد القيمة true والتي تقوم باسناد قيم الأعمدة إلى النتيجة النهائية

كما يوجد أيضاً FETCH_CLASS , PDO::FETCH_INTO , PDO::FETCH_LAZY وغيرها الكثير. يمكنك الاطلاع عليها من التوثيق الرسمي ل PHP لمعاينة بعض الأمثلة وطرق الاستخدام.

  • 0
نشر
بتاريخ 51 دقائق مضت قال Sam Ahw:

يقوم التابع setFetchMode بضبط وضع جلب البيانات، فيمكنك التحكم بطريقة جلب هذه البيانات لاستخدامها لاحقاً في شيفرتك البرمجية من خلال أنماط عديدة ومنها:

  • PDO::FETCH_ASSOC والتي تقوم بجلب البيانات وفهرستها اعتماداً على اسماء الأعمدة في قاعدة البيانات
  • PDO::FETCH_BOTH الافتراضية والتي تقوم بجلب البيانات وفهرستها ضمن مصفوفة من اسماء الأعمدة والقيم.
  • PDO::FETCH_BOUND تعيد القيمة true والتي تقوم باسناد قيم الأعمدة إلى النتيجة النهائية

كما يوجد أيضاً FETCH_CLASS , PDO::FETCH_INTO , PDO::FETCH_LAZY وغيرها الكثير. يمكنك الاطلاع عليها من التوثيق الرسمي ل PHP لمعاينة بعض الأمثلة وطرق الاستخدام.

براك الله فيك اخي زادك الله علما وجعلها في ميزان حسناتك ♥♥

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...