دمج البيانات المعدة مع INSERT INTO
عند اجتياز أعماق متاهة PHP: كائنات البيانات، ينشأ لغز محير عند محاولة تنفيذ MySQL استعلامات باستخدام عبارات معدة خصيصًا لعمليات INSERT INTO. خذ بعين الاعتبار مقتطف الكود التالي:$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();على الرغم من الالتزام بالطريقة الموصوفة المزعومة، إلا أن قاعدة البيانات تظل مهجورة بعناد. دعونا نستكشف العناصر المفقودة التي أعاقت تقدمنا.
يكمن المفتاح لفتح إمكانات البيانات المعدة لاستعلامات INSERT INTO في ربط المعلمات، وهي تقنية تسمح بالتكامل الآمن والديناميكي للقيم في بيان SQL. يتم تحقيق ذلك من خلال دمج العناصر النائبة في الاستعلام ومن ثم توفير القيم المقابلة كمصفوفة ترابطية أثناء التنفيذ.لاحظ الكود المنقح:$statement = $link->prepare('INSERT INTO قابل للاختبار (الاسم واسم العائلة والعمر) القيم (:fname, :sname, :age)'); بيان $->تنفيذ([ 'fname' => 'بوب'، 'sname' => 'ديسونوا', 'العمر' => '18'، ]);
$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();لاحظ وجود أسماء المعلمات، ':fname'، و':sname'، و':age'، داخل الاستعلام. تعمل هذه كعناصر نائبة للقيم الفعلية، والتي يتم توفيرها بعد ذلك كمصفوفة ترابطية في وظيفة التنفيذ ().بدلاً من ذلك، يمكنك استخدام '؟' بناء الجملة كعناصر نائبة وتمرير مجموعة من القيم دون تحديد أسماء المعلمات:$statement = $link->prepare('INSERT INTO testtable (name, lastname, age) قيم (؟، ؟، ؟)')؛ $statement->execute(['Bob', 'Desaunois', '18']);
$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();يوفر كلا الطريقتين مزايا وعيوب كل منهما. يؤدي استخدام المعلمات المسماة إلى تحسين إمكانية القراءة، في حين أن "؟" بناء الجملة يبسط عملية ربط القيم. ومع ذلك، في نهاية المطاف، فإن الاختيار بين الاثنين هو مسألة تفضيل شخصي.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3