استرداد البيانات باستخدام تعبيرات SQL المعدة مسبقًا في PHP
عند استخدام تعبيرات SQL مع قواعد البيانات في PHP، يمكنك استخدام التعبيرات المعدة مسبقًا (Prepared Statements) لتنفيذ استعلامات SQL بشكل آمن وفعال، وذلك باستخدام دالة prepare
لتحضير الاستعلام ومن ثم استخدام execute
لتنفيذه. ومن الهام فهم كيفية الحصول على النتائج بعد تنفيذ استعلام SQL من نوع SELECT.
في الكود الذي قدمته، يتم استخدام تعبير SQL SELECT لاسترداد بيانات معينة من جدول الفواكه في قاعدة البيانات. بعد تنفيذ الاستعلام باستخدام execute
، يمكنك الوصول إلى البيانات المسترجعة باستخدام الدالة fetchAll
أو fetch
على كائن الاستعلام $sth
. ستعيد هذه الدوال البيانات بتنسيق معين حسب الاختيار الذي تقوم به.
للاستعلامات التي تسترد بيانات متعددة، مثل SELECT، يمكنك استخدام fetchAll
لاسترداد كل الصفوف بشكل مرة واحدة. بينما يمكنك استخدام fetch
لاسترداد كل صف بشكل فردي عند الحاجة. يمكن استخدام حلقة للوصول إلى جميع الصفوف المسترجعة.
إليك كيفية تنفيذ هذا في الكود الخاص بك:
php
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->execute(array(':calories' => $calories, ':colour' => $colour));
// استرداد كل الصفوف في مصفوفة متعددة
$rows = $sth->fetchAll(PDO::FETCH_ASSOC);
// تحقق مما إذا كان هناك صفوف تم استردادها
if ($rows) {
// يمكنك القيام بما تشاء مع الصفوف المسترجعة هنا
foreach ($rows as $row) {
echo "Name: " . $row['name'] . ", Colour: " . $row['colour'] . ", Calories: " . $row['calories'] . "
";
}
} else {
echo "No rows returned.";
}
?>
في هذا المثال، يتم استرداد كل الصفوف باستخدام fetchAll
ووضعها في مصفوفة متعددة $rows
، ثم يتم التحقق مما إذا كانت المصفوفة غير فارغة قبل طباعة البيانات. إذا لم يتم استرداد أي صفوف، يتم عرض رسالة توضيحية.
المزيد من المعلومات
بالطبع، هنا بعض المعلومات الإضافية حول استخدام تعبيرات SQL المعدة مسبقًا في PHP وكيفية الحصول على البيانات المسترجعة:
-
استخدام معلمات مع تعبيرات SQL المعدة مسبقًا: في الكود الذي قدمته، يتم استخدام معلمات
:calories
و:colour
كجزء من الاستعلام. هذه المعلمات تسمح بتعيين قيم محددة عند تنفيذ الاستعلام باستخدامexecute
، مما يسمح بتجنب تعرض التطبيق لهجوم حقن SQL (SQL Injection) ويجعل الاستعلام أكثر أمانًا. -
استرداد البيانات باستخدام
fetchAll
وfetch
: يتم استخدامfetchAll
لاسترداد كل الصفوف المسترجعة في مصفوفة متعددة، بينما يستخدمfetch
لاسترداد صف واحد في كل مرة. يمكن تحديد نوع البيانات المسترجعة باستخدام ثوابت مثلPDO::FETCH_ASSOC
لاسترداد مصفوفة متعددة ذات الأسماء، أوPDO::FETCH_NUM
لاسترداد مصفوفة متعددة بالفهارس فقط، أوPDO::FETCH_BOTH
لاسترداد مصفوفة متعددة تحتوي على الأسماء والفهارس. -
التعامل مع النتائج الفارغة: يجب دائمًا التحقق من ما إذا كان هناك صفوف تم استردادها قبل تجاوز البيانات المسترجعة. إذا كانت النتيجة فارغة، فيجب على المطور التعامل مع هذا السيناريو بشكل مناسب، سواء عن طريق عرض رسالة للمستخدم أو اتخاذ إجراءات أخرى.
-
الاستفادة من بيانات الصفوف المسترجعة: بعد استرداد البيانات، يمكنك استخدامها كما تشاء داخل التطبيق. يمكنك عرضها في واجهة المستخدم، أو معالجتها بشكل ديناميكي، أو حفظها في قاعدة بيانات أخرى، وما إلى ذلك.
باستخدام تعبيرات SQL المعدة مسبقًا في PHP، يمكنك تنفيذ استعلامات SQL بشكل آمن وفعال واسترداد البيانات بسهولة للاستفادة منها في التطبيقات الخاصة بك.