قائمة الطعام
بدون مقابل
تسجيل
الصفحة الرئيسية  /  الوسائط المتعددة/ كيفية استخدام PHP لإدراج صفوف في قاعدة بيانات MySQL. كتابة البيانات إلى MySQL - لجعل أغنية كود الصوت Php تدخل البيانات في قاعدة البيانات

كيفية استخدام PHP لإدراج صفوف في قاعدة بيانات MySQL. كتابة البيانات إلى MySQL - لجعل أغنية كود الصوت Php تدخل البيانات في قاعدة البيانات

في هذا البرنامج التعليمي ، سننظر في كيفية إدراج البيانات في قاعدة البيانات مباشرة من نصوص PHP النصية الخاصة بك.

إدخال البيانات باستخدام SQL

يمكنك استخدام SQL لإدراج البيانات في قاعدة بيانات بنفس الطريقة التي تستخدم بها SQL لإنشاء قاعدة بيانات وجداول. بناء جملة استعلام SQL هو:

أدخل في TableName (العمود 1 ، العمود 2, ...) القيم (القيمة 1 ،القيمة 2 ، ...)

كما ترى ، يمكنك تحديث أعمدة متعددة في عبارة SQL واحدة عن طريق تحديدها في قائمة مفصولة بفواصل. لكن بالطبع ، يمكنك أيضًا تحديد عمود واحد وقيمة واحدة فقط. الأعمدة التي لم يتم ذكرها في عبارة SQL المقدمة ستبقى فارغة.

مثال: إدراج شخص جديد في جدول

في هذا المثال ، نستخدم قاعدة البيانات من الدرس 18. لنفترض أننا نريد إدراج شخص في قاعدة البيانات. يمكن ان تكون جوس أوزةمع رقم الهاتف 99887766 وتاريخ الميلاد 1964-04-20 .

عبارة SQLقد يبدو مثل هذا:

$ strSQL = "أدخل إلى الأشخاص (الاسم الأول ، الاسم الأخير ، الهاتف ، تاريخ الميلاد) VALUES (" Gus "،" Goose "،" 99887766 "،" 1964-04-20 ")"؛

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

strSQL = "إدراج في الأشخاص (" ؛ strSQL = strSQL. "الاسم الاول"؛ strSQL = strSQL. "اللقب" strSQL = strSQL. "هاتف"؛ strSQL = strSQL. "ولادة)"؛ strSQL = strSQL. "القيم (" ؛ strSQL = strSQL. "" Gus "،" ؛ strSQL = strSQL. ""وزة"، "؛ strSQL = strSQL. "" 99887766 "،" ؛ strSQL = strSQL. "" 1964-04-20 ")" ؛ mysql_query ($ strSQL) أو die (mysql_error ()) ؛

هنا يتم بناء جملة SQL عن طريق تقسيم الجملة إلى أجزاء صغيرة ثم دمجها في متغير $ strSQL.

من الناحية العملية ، لا يوجد فرق في تطبيق أحدهما أو الآخر ، ولكن عند العمل باستخدام طاولات كبيرة ، تصبح القدرة على "التتبع" مهمة للغاية ، لذلك اختر الطريقة الأنسب.

دعنا نحاول تنفيذ الكود التالي لإدراج Gus Goose في قاعدة البيانات:

إدخال البيانات في قاعدة البيانات // الاتصال بخادم قاعدة البيانات mysql_connect ("mysql.myhost.com"، "user"، "sesame") أو die (mysql_error ()) ؛// حدد قاعدة البيانات mysql_select_db ("قاعدة بياناتي") أو يموت (mysql_error ()) ؛ // بناء جملة SQL $ strSQL = "INSERT INTO people ("؛ $ strSQL = $ strSQL. "الاسم الاول"؛ $ strSQL = $ strSQL. "الكنية"؛ $ strSQL = $ strSQL. "هاتف"؛ $ strSQL = $ strSQL. "تاريخ الميلاد)"؛ $ strSQL = $ strSQL. "القيم("؛ $ strSQL = $ strSQL. "جوس" ، "؛ $ strSQL = $ strSQL. ""وزة"، "؛ $ strSQL = $ strSQL. "" 99887766 "،" ؛ $ strSQL = $ strSQL. "" 1964-04-20 ")" ؛ // يتم تنفيذ عبارة SQL mysql_query ($ strSQL) أو die (mysql_error ()) ؛ // إغلاق الاتصال mysql_close () ، ؟>

تم تحديث DB!

حفظ مدخلات المستخدم في قاعدة البيانات

ربما تكون قد اكتشفت بالفعل أنه يمكنك إنشاء نموذج لهذا ، كما في الدرس 11 ، ويمكن إدراج القيم من النموذج في جملة SQL. لنفترض أن لديك نموذجًا بسيطًا:

يتم إرسال هذا النموذج إلى ملف insert.phpحيث ، كما هو موضح في الدرس 11 ، يمكنك الحصول على مدخلات المستخدم عن طريق طلب محتوى النموذج. في هذا حالة محددةقد تبدو عبارة SQL كما يلي:

strSQL = "أدخل قيم الأشخاص (الاسم الأول) (" ". $ _POST [" الاسم الأول "]." ")"

وبالمثل ، يمكنك طلب بيانات لملفات تعريف الارتباط والجلسات وسلاسل الاستعلام وما إلى ذلك.

أخطاء المبتدئين الأكثر شيوعًا

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

نوع البيانات غير صالح

من المهم أن تتطابق البيانات ونوع البيانات الخاصين بالعمود. يمكن أن يحتوي كل عمود على بيانات من نوع معين. تُظهر لقطة الشاشة التالية أنواع بيانات جدول "الأشخاص" من مثالنا.

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

يتم سرد أنواع البيانات الأكثر استخدامًا أدناه:

المعنى نوع البيانات الحجم
CHR
نص أو مجموعة من النصوص والأرقام. يمكن استخدامها أيضًا للأرقام غير المستخدمة في العمليات الحسابية (مثل أرقام الهواتف). ما يصل إلى 255 حرفًا - يتم تحديد الطول في "الطول"
نص
كتل نصية كبيرة أو مجموعة من النصوص والأرقام. ما يصل إلى 65535 حرفًا
ذكاء
البيانات الرقمية للحسابات الرياضية. 4 بايت
تاريخ
التواريخ بتنسيق YYY-MM-DD 3 بايت
زمن
الوقت بتنسيق hh: mm: ss 3 بايت
التاريخ
التاريخ والوقت بتنسيق YYY-MM-DD hh: mm: ss 8 بايت

عبارات SQL مع علامات اقتباس أو خطوط مائلة عكسية

إذا حاولت لصق نص يحتوي على أحرف اقتباس مفردة (") ، التنصيص(") أو الشرطة المائلة للخلف (\) ، لن يتم إدراج السجل في قاعدة البيانات. الحل هو استبدال الخطوط المائلة العكسية قبل الأحرف التي يجب نسخها عند إدراجها في استعلامات قاعدة البيانات.

في هذا الدرس ، سوف نتعلم كيفية الدخول إلى قاعدة بيانات MySql ، البيانات التي يدخلها المستخدم في النموذج. سوف تتعلم كيفية الاتصال بقاعدة بيانات MySql من كود صفحة الويب ، وكذلك معالجة البيانات وإدخالها في قاعدة البيانات.


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

في هذا البرنامج التعليمي سوف نقوم بإنشاء وثيقة htmlلإدخال معلومات المستخدم ، و php- معالج هذه المعلومات الذي سيقوم بمعالجة البيانات والاتصال بقاعدة بيانات MySql وإدخال السجلات الجديدة هناك.

ننتقل من الأقوال إلى الأفعال ، فلنبدأ.

إضافة بيانات المستخدم إلى قاعدة بيانات MySql من صفحة ويب

الخطوة الأولى: إنشاء شكل أتش تي أم أللإدخال البيانات

منذ البداية ، نحتاج إلى الاستعداد للعمل مع php و MySql واختبار الكود المكتوب عليه الكمبيوتر المحلي. لهذا:

1. قم بتشغيل Denwer على جهاز الكمبيوتر الخاص بك.

2. افتح قرص افتراضي، تم إنشاؤه بواسطة دنفر (على سبيل المثال ، محرك الأقراص الخاص بي هو "Z"). افتحه ، ثم: home - localhost - www - أنشئه هناك ملف جديدوأعطيه اسمًا (سأطلق عليه اسم "db1").

3. إذا كنت تعمل في Adobe Dreamweaver ، فانتقل إلى مدير الموقع ، ثم انقر فوق الزر "جديد" ، وحدد المسار إلى المجلد الذي تم إنشاؤه حديثًا كمسار ، وفي الحقل أعلاه يمكنك إعطاء اسم للموقع ، ثم انقر فوق حفظ - تم. بعد كل هذا ، سيظهر مجلدك في الجزء الأيمن من برنامج Adobe Dreamweaver.

1. الآن سنقوم بإنشاء منتظم ملف html(دعنا نسميها info_form.html وحفظها في مجلد db1 المنشأ حديثًا) واكتب رمز النموذج هناك لإدخال المعلومات. في جدول مستخدمي قاعدة البيانات new_db الخاص بنا ، هناك 4 حقول يمكن للمستخدم ملؤها (سيتم ملء حقل المعرف تلقائيًا). بناءً على ذلك ، يمكنك إنشاء الكود التالي:

وثيقة بدون عنوان










هنا ، في معلمة "الإجراء" في نموذجنا ، يتم تسجيل الملف form.php. سيكون ملف المعالج الذي سننشئه بعد ذلك.

لنقم أيضًا بإنشاء ملف style.css لتصميم النموذج الخاص بنا. تم تضمينه بالفعل في الكود ، لذلك كل ما تبقى هو إنشائه ووضعه في نفس المجلد مثل ملف html واكتب الكود التالي فيه:

الجسم (العرض: 400 بكسل ؛ الهامش: 0 تلقائي ؛ الخلفية: # F8F4B6 ؛) التسمية (العرض: كتلة ؛ تعويم: يسار ؛ العرض: 150 بكسل ؛ الحشو: 0 10 بكسل ؛ الهامش: 18 بكسل 0 0 ؛ محاذاة النص: اليمين ؛) # إرسال (float: right؛ margin: 5px 50px 10px 0؛)

الآن الشكل يبدو كالتالي:

ومع ذلك ، إذا أدخلت البيانات وحاولت إرسال النموذج ، فسترى خطأً ، لأنه لا يوجد ملف form.php في دليل البرامج النصية.

إنشاء ملف معالج هي مهمتنا التالية.

2. دعنا نذهب داخل المجلد ديسيبلقم بإنشاء مجلد باسم نصوص. في ذلك ، سنحفظ جميع البرامج النصية الخاصة بنا للتفاعل مع قاعدة بيانات MySql.

بعد إنشاء المجلد ، قم بإنشاء php الجديدملف وحفظه في مجلد البرامج النصية بتنسيق form.php.

ولكن قبل أن نتعامل مباشرة مع ملف معالجة المعلومات ، يجب علينا أولاً الاتصال بقاعدة البيانات الخاصة بنا. أقترح إنشاء لهذا ملف منفصلولهذا السبب:

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

لنقم بإنشاء ملف php جديد ، دعنا نسميه connect.phpووضعها في مجلد البرامج النصية. في ذلك ، سنكتب الكود الخاص بالاتصال بقاعدة بيانات MySql ، بالإضافة إلى الكود الذي سيبلغ عن الأخطاء في حالة حدوثها. يرجى ملاحظة أنك ستحتاج إلى إدخال اسم المستخدم وكلمة المرور واسم قاعدة البيانات الخاصة بك كمعلمات. يجب أن يكون المضيف مضيفًا محليًا.

خطأ في الاتصال بقاعدة البيانات! " .الخلية خطأ() . "

") ؛ mysql_select_db (" new_db ") // معلمة بين قوسين (" اسم قاعدة البيانات المراد الاتصال بها ") أو يموت ("

خطأ في اختيار قاعدة البيانات! ". الخلية خطأ() . "

"); ?>

الآن دعنا ننتقل إلى ملف form.php ونضمّن ملف connect.php فيه باستخدام الكود التالي:

إذا حاولت إرسال النموذج الآن ، فسترى صفحة ويب فارغة بعد الإرسال. هذا أمر طبيعي ، لأننا فقط اتصلنا بالقاعدة ولا نعرض أي شيء آخر في الوقت الحالي.

إذا ظهرت لك رسالة خطأ ، فتحقق من صحة جميع المعلمات (اسم المستخدم وكلمة المرور واسم المضيف: localhos واسم قاعدة البيانات) ، وتأكد أيضًا من تشغيل Denver.

3. لقد نجحنا في الاتصال بقاعدة بيانات MySql ، والآن نحتاج إلى ذلك قبول البيانات المدخلة في النموذج في ملف المعالج الخاص بنا. ستساعدنا سمات "الاسم" الموجودة في مستند html في هذا الأمر.

للحصول على البيانات ، نستخدم خاص متغير php، الذي يزودنا بجميع المعلومات من نموذج الويب. هذا المتغير يسمى "$ _REQUEST".

اكتب الكود التالي في ملف form.php بعد توصيل ملف connect.php:

$ first_name = $ _REQUEST ["first_name"] ؛ $ last_name = $ _REQUEST ["last_name"] ؛ $ email = $ _REQUEST ["البريد الإلكتروني"] ؛ $ facebook = $ _REQUEST ["facebook"] ؛

4. تلقينا البيانات في الملف وأدخلناها في المتغيرات. أنت الآن بحاجة إرسال هذه البيانات إلى جدول قاعدة بيانات MySql الخاص بنا. للقيام بذلك ، تحتاج إلى كتابة الكود التالي أدناه:

$ insert_sql = "أدخل المستخدمين (الاسم_الأول ، الاسم_الأخير ، البريد الإلكتروني ، facebook)". "VALUES (" ($ first_name) "،" ($ last_name) "،" ($ email) "،" ($ facebook) ")؛"؛ mysql_query ($ insert_sql) ؛

هنا ، نشكل أولاً استعلامًا ، يقول إننا بحاجة إلى إدخال المتغيرات المناسبة في الحقول المناسبة في جدول "المستخدمين". نقوم بإدخال هذا الاستعلام في المتغير “insert_sql $”. وبعد ذلك ، باستخدام وظيفة mysql_query الخاصة ، نقوم بتنفيذ هذا الاستعلام.

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

5. لقد قمنا بإدراج سجل جديد من صفحة ويب في جدول قاعدة بيانات MySql. الآن أريد أن أتطرق قليلاً إلى التنسيق الذي يتم فيه إدراج بياناتنا.

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

ثانيًا ، لدينا مجال للفيسبوك. إذا أردنا لاحقًا عرض هذه المعلومات كرابط ، فنحن بحاجة إلى الحرص على تخزين البيانات الموجودة في هذا الحقل بالتنسيق الصحيح (مثل "http://www.facebook.com/facebook id"). لكن المستخدم لن يقوم دائمًا بإدخال هذه البيانات كما نحتاج. يمكنه إدخال: "www.facebook.com/facebook id" أو "facebook.com/facebook id" أو فقط "/ facebook id".

يجب تجنب هذه المواقف. للقيام بذلك ، دعنا نصحح الكود الخاص بنا. سنقطع المسافات الزائدة الممكنة باستخدام الوظيفة تقليم، وستتحقق الوظيفة من صحة عنوان url الذي تم إدخاله لـ facebook المطابقة المسبقة. وبالتالي ، سيبدو كود ملف form.php بالكامل كما يلي:

وثيقة بدون عنوان تم إضافة إدخال جديد إلى قاعدة البيانات!

"; ?>

حول الوظيفة المطابقة المسبقة:
هذه وظيفة للبحث باستخدام التعبيرات العادية.

المعلمة الأولى بين قوسين هي تعبير عادي، والثاني هو السلسلة المطلوب البحث عنها.

ترجع الدالة المطابقة الأولى فقط: 0 في حالة عدم وجود مطابقات ، و 1 إذا كان هناك تطابق.

حاول الآن ملء النموذج عن قصد من خلال وضع مسافات غير ضرورية في بداية ملء أحد الحقول وإدخال عنوان facebook بدون http: // أو عن طريق إدخال معرف facebook فقط تمامًا. أرسل طلبًا ، ثم انتقل إلى قاعدة البيانات وسترى أنه على الرغم من الملء غير الصحيح تمامًا ، فإن البيانات تحتوي على النموذج الذي نحتاجه بالضبط.

سأنتهي بهذا هذا الدرس. يمكنك تنزيل جميع ملفات هذا الدرس في الكود المصدري (فقط لا تنس تغيير المعلمات إلى المعلمات الخاصة بك في ملف connect.php).

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

اترك تعليقاتك وشاركها مع أصدقائك باستخدام أزرار الوسائط الاجتماعية.

حظا سعيدا ونراكم في الدرس القادم!

آخر تحديث: 1.11.2015

لإضافة البيانات ، يتم استخدام تعبير "INSERT":

$ query = "أدخل في قيم البضائع (NULL،" سامسونج جالاكسي III "،" Samsumg ")" ؛

تُدرج عبارة "INSERT" صفًا واحدًا في الجدول. بعد، بعدما كلمة رئيسيةيحدد INTO اسم الجدول ، وبعد القيم يتم تحديد مجموعة القيم لكافة الأعمدة بين أقواس. نظرًا لأن لدينا ثلاثة أعمدة في الجدول ، فإننا نحدد ثلاث قيم.

نظرًا لأنه في الموضوع السابق ، عند إنشاء جدول ، حددنا ترتيب العمود التالي: المعرف ، الاسم ، الشركة ، في هذه الحالة ، يتم تمرير NULL لعمود المعرف ، و "Samsung" للاسم جالاكسي الثالث، وللشركة - "Samsumg".

نظرًا لتعريف عمود المعرف على أنه AUTO_INCREMENT ، لا يتعين علينا تحديد قيمة رقمية محددة له ، ويمكننا تمرير قيمة NULL وستقوم MySQL بتعيين القيمة المتاحة التالية للعمود.

الآن دعونا نلقي نظرة على إضافة البيانات باستخدام مثال. لنقم بإنشاء ملف create.phpبالمحتوى التالي:

تمت إضافة البيانات"؛) // اتصال وثيق mysqli_close ($ link) ؛)؟>

إضافة نموذج جديد

أدخل النموذج:

الصانع:

هنا ، يتم دمج رمز التفاعل مع قاعدة البيانات مع وظائف النماذج: باستخدام النموذج ، نقوم بإدخال البيانات لإضافتها إلى قاعدة البيانات.

الأمن و MySQL

هنا استخدمنا الدالة mysqli_real_escape_string (). إنه يعمل على هروب الأحرف في سلسلة ، والتي يتم استخدامها بعد ذلك في استعلام SQL. يأخذ كمعلمات كائن اتصال وسلسلة ليتم تخطيها.

وبالتالي ، فإننا في الواقع نستخدم حرف الهروب مرتين: أولاً للتعبير sql باستخدام الدالة mysqli_real_escape_string () ، ثم بالنسبة لـ html باستخدام دالة htmlentities (). سيسمح لنا ذلك بحماية أنفسنا من نوعين من الهجمات في وقت واحد: هجمات XSS وحقن SQL.

في هذا الدليل ، ستتعلم كيفية بدء إدارة قاعدة بيانات من ملف بي أتش بيالنصي. سوف تتعلم إضافة سجل إلى جدول MySQL ،استخدام كود php. قبل أن تبدأ ، تحقق من برامجنا التعليمية الأخرى التي تغطي الخطوات الأساسية للعمل مع PHP وقواعد البيانات - الاتصال من PHP إلى قاعدة بيانات MySQL.

قبل البدء ، تحقق مما يلي:

  • الوصول إلى لوحة تحكم الاستضافة الخاصة بك

الخطوة 1 - إنشاء الجدول

بادئ ذي بدء ، نحتاج إلى إنشاء جدول لبياناتك. هذا إجراء بسيط للغاية يمكنك القيام به phpMyAdminمن لوحة تحكم الاستضافة الخاصة بك. لقد قمنا بالفعل بتغطية عملية إنشاء قاعدة بيانات MySQL في برنامج تعليمي سابق ، لذلك سنتخطى هذه النقطة هنا.

بعد دخولك لصفحة phpMyAdmin سترى صورة مشابهة:

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

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

فيما يلي بعض التفسيرات البسيطة للحقول التي سنستخدمها:

  • اسمهو اسم مجالك. سيتم عرضه في أعلى طاولتك.
  • يكتب- هنا يمكنك ضبط نوع الحقل. على سبيل المثال ، نختار فارشار، لأننا هنا نحتاج إلى إدخال سلسلة ذات اسم (يحتوي على أحرف وليس أرقام).
  • الطول / القيم- يستخدم لتعيين الحد الأقصى لطول السجل الخاص بك في هذا المجال.
  • فِهرِس- نستخدم الفهرس "الأساسي" لحقل "ID" الخاص بنا. عندما يتم إنشاء جدول ، فمن المستحسن أن يكون لديك حقل معرف واحد. يتم استخدامه لفهرسة السجلات في جدول عند إعداد العلاقات بين الجداول. يمكن أيضًا ملاحظته هنا "A_I"مما يعني زيادة تلقائية. سيزيد هذا الإعداد الفهرس تلقائيًا (1،2،3،4 ...).

انقر يحفظوسيتم إنشاء طاولتك.

الخطوة 2 - إنشاء كود PHP وإضافة سجل إلى جدول MySQL

الخيار 1 - طريقة MySQLi

بادئ ذي بدء ، تحتاج إلى إنشاء اتصال بقاعدة البيانات ، وفقًا لدليلنا السابق. بعد ذلك ، يمكننا متابعة استعلام SQL لإضافة سجل إلى جدول MySQL - إدراج. إليك مثال رمز كامل مع اتصال وطريقة إدراج:

". mysqli_error ($ conn) ؛) mysqli_close ($ conn) ؛؟>

وهكذا ، فإن الجزء الأول من الكود (الأسطر 3 – 18 ) جزء من إنشاء اتصال بقاعدة البيانات. لن نراجع هذا الجزء مرة أخرى ، إذا كنت تريد معرفة معنى كل سطر ، فراجع برنامجنا التعليمي السابق حول كيفية الاتصال بقاعدة بيانات.

لنبدأ بالخط 19 :

$ sql = "أدخل الطلاب (الاسم ، الاسم الأخير ، البريد الإلكتروني) القيم (" Thom "،" Vial "،" [بريد إلكتروني محمي]")";

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

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

الجزء التالي من القيمة القيم. هنا نضع قيمنا على الحقول المحددة مسبقًا. وبالتالي ، سيحصل كل حقل على قيمته الخاصة. على سبيل المثال ، في حالتنا سيكون شيئًا مثل: name = Thom، lastname = Vial، email = [بريد إلكتروني محمي] .

من المهم أن نلاحظ أننا نشكل هنا استعلام SQL باستخدام كود PHP. يجب وضع استعلامات SQL بين علامتي اقتباس. في مثالنا ، كل شيء بين علامتي الاقتباس وبعد $ sql = هو استعلام SQL.

الجزء التالي من الكود ( 20 – 22 سطر) الاستعلام الخاص بنا والتحقق مما إذا كان الاستعلام ناجحًا:

If (mysqli_query ($ conn، $ sql)) (صدى "تم إنشاء سجل جديد بنجاح"؛)

يتم عرض رسالة نجاح إذا تم تشغيل الاستعلام بشكل صحيح.

والجزء الأخير 22 – 24 سطور) تظهر رسالة أخرى في حال فشل طلبنا:

عدا ذلك (صدى "خطأ:". $ sql. "
".mysqli_error ($ conn) ؛)

يعرض هذا الرمز رسالة خطأ إلينا في حالة حدوث خطأ ما.

الخيار 2 - طريقة كائن بيانات PHP (P HP Data O bject)

كما في المثال السابق ، نحتاج أولاً إلى إجراء اتصال بقاعدة البيانات ، ويتم ذلك عند إنشاء كائن PDO جديد - يوضح البرنامج التعليمي السابق كيفية القيام بذلك. نظرًا لأن اتصال قاعدة بيانات MySQL هو كائن PDO ، يجب علينا استخدام "طرق" مختلفة لـ PDO (نوع من الوظائف التي تعد جزءًا من كائن معين) لإعداد الاستعلام وتشغيله. تسمى طرق الكائن مثل هذا:

$ the_Object-> the_Method ()؛

يتيح لك PDO "تحضير" كود SQL قبل تنفيذه. يتم تقييم استعلام SQL وتعديله قبل تشغيله. لذلك ، هجوم بسيط من قبل حقن SQLيمكن أن يتم ذلك عن طريق ملء كود SQL في حقل النموذج. فمثلا:

// يكتب المستخدم هذا في حقل اسم المستخدم لنموذج تسجيل الدخول thom "؛ DROP DATABASE user_table ؛ // يصبح الاستعلام النهائي" SELECT * FROM user_table WHERE username = thom "؛ DROP DATABASE user_table ؛

نظرًا لأن كود SQL صحيح من الناحية التركيبية ، فإن الفاصلة المنقوطة تصنع إسقاط قاعدة البيانات user_tableتم إسقاط استعلام SQL الجديد وجدول المستخدم الخاص بك. التعبيرات المعدة لا تسمح بالحروف و ; لإكمال الطلب الأصلي والتعليمات إسقاط قاعدة البياناتلن يتم إعدامه.

دائمااستخدام الاستعلامات المعدة عند إرسال أو تلقي البيانات من قاعدة بيانات مع PDO.

لاستخدام التعبيرات المعدة ، تحتاج إلى إنشاء متغير جديد يستدعي الطريقة إعداد()على كائن قاعدة البيانات.

يبدو الرمز الصحيح كما يلي:

اسم الخادم $ = "mysql.hostinger.com" ؛ قاعدة بيانات $ = "u266072517_name" ؛ اسم المستخدم $ = "u266072517_user" ؛ كلمة مرور $ = "buystuffpwd" ؛ $ sql = "mysql: host = $ servername؛ dbname = $ database؛"؛ $ dsn_Options = ؛ // أنشئ اتصالاً جديدًا بقاعدة بيانات MySQL باستخدام PDO ، $ my_Db_Connection هو كائن محاولة ($ my_Db_Connection = new PDO ($ sql ، $ username ، $ password ، $ dsn_Options) ؛ echo "Connected بنجاح" ؛) catch (PDOException $ خطأ) (صدى "خطأ اتصال:". $ error-> getMessage () ؛) // تعيين المتغيرات للشخص الذي نريد إضافته إلى قاعدة البيانات $ first_Name = "Thom"؛ $ last_Name = "قارورة" ؛ $ email = " [بريد إلكتروني محمي]"؛ // هنا نقوم بإنشاء متغير يستدعي طريقة تحضير () لكائن قاعدة البيانات // يتم إدخال استعلام SQL الذي تريد تشغيله كمعامل ، ويتم كتابة العناصر النائبة على النحو التالي: placeholder_name $ my_Insert_Statement = $ my_Db_Connection-> تحضير ("INSERT INTO Students (name، lastname، email) VALUES (: first_name،: last_name،: email)")؛ // الآن نخبر البرنامج النصي الذي يشير إليه كل عنصر نائب بالفعل باستخدام طريقة bindParam () // First المعلمة هي العنصر النائب في العبارة أعلاه - المعلمة الثانية هي متغير يجب أن تشير إلى $ my_Insert_Statement-> bindParam (: first_name، $ first_Name)؛ $ my_Insert_Statement-> bindParam (: last_name، $ last_Name)؛ $ my_Insert_Statement-> bindParam (: email، $ email) ؛ // تنفيذ الاستعلام باستخدام البيانات التي حددناها للتو // ترجع الطريقة execute () TRUE إذا كانت ناجحة و FALSE إذا لم تكن كذلك ، مما يسمح لك بكتابة رسائلك الخاصة هنا إذا ( $ my_Insert_Statement-> تنفيذ ()) (صدى "تم إنشاء سجل جديد بنجاح" ؛) el حد ذاتها (صدى "تعذر إنشاء سجل" ؛ ) // في هذه المرحلة يمكنك تغيير بيانات المتغيرات والتنفيذ مرة أخرى لإضافة المزيد من البيانات إلى قاعدة البيانات $ first_Name = "John"؛ $ last_Name = "سميث" ؛ $ email = " [بريد إلكتروني محمي]. )

نستخدم الطريقة في الأسطر 28 و 29 و 30 bindParam ()كائن قاعدة البيانات. هناك أيضا طريقة ربط القيمة ()، مختلفة عن سابقتها.

  • bindParam () -هذه الطريقة تحسب البيانات عند الطريقة نفذ - اعدم()حقق. في المرة الأولى التي يصل فيها البرنامج النصي إلى الطريقة نفذ - اعدم()يرى ذلك $ first_Nameيشير إلى "Thom" ويربط تلك القيمة وينفذ الاستعلام. عندما يحصل البرنامج النصي للمرة الثانية على الطريقة نفذ - اعدم()يبدو ذلك $ first_Nameيشير الآن إلى "John" ، ويربط هذه القيمة ، ويقوم بتشغيل الاستعلام مرة أخرى بالقيمة الجديدة. من المهم أن نفهم أننا ننشئ طلبًا مرة واحدة ثم نستبدل بيانات مختلفة في أماكن مختلفة في البرنامج النصي.
  • ربط القيمة () -تقوم هذه الطريقة بتقييم البيانات بمجرد وصول قائمة الانتظار إليها. منذ القيمة $ first_Nameتم منحه كـ "Thom" ، في الوقت الحالي وصلنا إلى الأسلوب ربط القيمة ()، سيتم استخدامه عند استدعاء الطريقة نفذ - اعدم()إلى عن على $ my_Insert_Statement.

لاحظ أننا نعيد استخدام المتغير $ first_Nameومنحها قيمة جديدة مرة ثانية. إذا قمت بفحص قاعدة البيانات الخاصة بك بعد تشغيل هذا البرنامج النصي ، فسيكون كلا الاسمين المقدمين هناك ، على الرغم من قيمة المتغير $ first_Nameسيكون مساويًا لـ "John" في نهاية هذا البرنامج النصي. تذكر أن PHP تقيم محتويات البرنامج النصي قبل تشغيله.

إذا قمت بتغيير البرنامج النصي الخاص بك عن طريق استبدال ربطعلى ال ربط القيمة، ستضيف "Thom Vial" إلى قاعدة بيانات MySQL مرتين وسيتم تجاهل John Smith.

الخطوة 3 - التحقق من النجاح وحل المشكلات الشائعة

إذا كان الاستعلام الذي أجريناه على قاعدة بيانات MySQL ناجحًا ، فسنرى رسالة مثل هذه:

حل الأخطاء الشائعة

MySQLi

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

كما نرى ، الجزء الأول من الكود على ما يرام ، تم إنشاء الاتصال بنجاح ، لكن استعلام SQL الخاص بنا فشل أثناء التنفيذ.

"خطأ: INSERT INTO Students (الاسم ، الاسم الأخير ، البريد الإلكتروني) VALUES (" Thom "،" Vial "،" [بريد إلكتروني محمي]") لديك خطأ في بناء جملة SQL ؛ تحقق من الدليل الذي يتوافق مع إصدار خادم MySQL لمعرفة الصيغة الصحيحة لاستخدامها بالقرب من" (الاسم ، الاسم الأخير ، البريد الإلكتروني) VALUES ("Thom" ، "Vial" ، " [بريد إلكتروني محمي]")" في السطر 1 "

هناك خطأ في بناء الجملة يتسبب في فشل البرنامج النصي الخاص بنا. كان الخطأ هنا:

$ sql = "أدخل الطلاب (الاسم ، الاسم الأخير ، البريد الإلكتروني) القيم (" Thom "،" Vial "،" [بريد إلكتروني محمي]")";

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

PDO

في السطر 7 من اتصال PDO ، يتم تعيين وضع معالجة الأخطاء على "عرض كافة الاستثناءات". إذا قمت بإخراج هذا من البرنامج النصي وفشل الطلب ، فلن تتلقى أي رسالة خطأ. مع تمكين الاستثناءات ، سيتم عرض المشكلات المحددة التي تمت مواجهتها. بشكل عام ، يُفضل استخدام هذا عند تطوير برنامج نصي ، حيث يمكنه الكشف عن أسماء قواعد البيانات والجداول التي ترغب في إخفائها عن أي شخص يمكنه الحصول عليها دخول غير مرخصلبياناتك. في الحالة أعلاه ، عند استخدام الأقواس المتعرجة بدلاً من الأقواس المستديرة ، يبدو الخطأ كما يلي:

خطأ فادح: استثناء غير معلوم "PDOException" برسالة "SQLSTATE: خطأ في بناء الجملة أو انتهاك وصول: 1064 لديك خطأ في بناء جملة SQL ؛ تحقق من الدليل الذي يتوافق مع إصدار خادم MySQL الخاص بك للحصول على البنية الصحيحة لاستخدامها بالقرب من "(الاسم ، الاسم الأخير ، البريد الإلكتروني) VALUES (" Thom "،" Vial "،" [بريد إلكتروني محمي]")" في السطر 1 "

مشاكل أخرى قد تواجهها:

  • الحقول المحددة بشكل غير صحيح (الحقول غير موجودة أو أخطاء إملائية).
  • نوع القيمة غير متطابق مع نوع الحقل. على سبيل المثال ، عندما نريد تعيين قيمة رقم 47 مجال اسم، سنحصل على خطأ لأن القيمة من المفترض أن تكون سلسلة. ولكن ، إذا حددت رقمًا بين علامات الاقتباس ، على سبيل المثال ، “47” ، لن يكون هناك خطأ ، لأن رقمنا سيُكتب كسلسلة في هذا الحقل.
  • جرت محاولة لإدخال بيانات في جدول غير موجود ، أو خطأ إملائي في اسم الجدول.

يمكن إصلاح كل هذه الأخطاء باتباع إرشادات استكشاف الأخطاء وإصلاحها أو عن طريق التحقق من سجل الأخطاء.

بعد إضافة البيانات بنجاح ، يجب أن نراها في قاعدة البيانات الخاصة بنا. فيما يلي مثال لجدول أضفنا فيه بياناتنا ، كما هو معروض في phpMyAdmin.

استنتاج

في هذا الدليل ، تعلمت كيفية الاستخدام كود PHP لإضافة سجل إلى جدول MySQLاستخدام MySQLiو PDO. كما تدرس حالات الأخطاء الشائعة وحلولها. إن معرفة كيفية استخدام كود PHP للإضافة إلى قاعدة بيانات MySQL سيكون مفيدًا سواء كنت تتعلم البرمجة أو تقوم بالفعل ببناء موقع الويب الخاص بك.

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

اسمك:
بريدك الالكتروني:


يمكن استخدام هذا النموذج لتسجيل مستخدم جديد ، لإرسال الأخبار ، ولجمع الإحصائيات ، وأي شيء ... بشكل عام ، يملأ المستخدم هذا النموذج ببياناته: الاسم والبريد ، والنقر على الزر ثم الزر تذهب البيانات إلى نص php:

$ name = $ _POST ["الاسم"] ؛ $ email = $ _POST ["البريد الإلكتروني"] ؛ نتيجة $ = mysqli_query ("INSERT INTO المستخدم (الاسم ، البريد الإلكتروني) VALUES (" $ name "،" $ email ")")؛ إذا كانت (نتيجة $) (صدى "تم حفظ البيانات بنجاح!" ؛) وإلا (صدى "حدث خطأ ، يرجى المحاولة مرة أخرى." ؛)


ماذا يحدث في هذا السيناريو؟ الآن دعنا نكتشف ذلك!
البيانات المدخلة في النموذج طريقة POSTانتقل إلى البرنامج النصي php (الذي تم كتابته أعلاه) ، وباستخدام المصفوفة العالمية $ _POST ، يتم تشكيل البيانات في متغيري $ name و $ email:

$ name = $ _POST ["الاسم"] ؛ $ email = $ _POST ["البريد الإلكتروني"] ؛


بعد أن تصبح المتغيرات جاهزة لإدخالها في قاعدة البيانات ، نقوم بتكوين استعلام. لكن أولاً ، يجب أن تكون البرامج النصية الخاصة بك متصلة بالفعل بقاعدة البيانات ، وكيفية الاتصال بقاعدة البيانات ، كتبت في هذا الموضوع :.الطلب نفسه يبدو كالتالي:

نتيجة $ = mysqli_query ("INSERT INTO المستخدم (الاسم ، البريد الإلكتروني) VALUES (" $ name "،" $ email ")")؛


أشرنا في هذا الرمز إلى أنه ستتم إضافة المتغيرات التالية إلى الاسم وخلايا البريد الإلكتروني الموجودة في جدول المستخدم: $ name و $ email.
علاوة على ذلك ، إذا سارت الأمور على ما يرام ، فسوف نتلقى رسالة من الحالة:

تم حفظ المعلومات بنجاح!


إذا كانت هناك أي مشاكل ولم يتم إدخال البيانات ، فسنستلم رسالة خطأ:

لقد حدث خطأ ، يرجى المحاولة مرة أخرى.


هذا كل شئ!

*** *** *** *** ***

إذا رغبت في ذلك ، يمكنك إضافة المزيد من الحقول لإدخال المعلومات ، على سبيل المثال ، نحتاج إلى إضافة حقل لإدخال مدينة المستخدم. لدينا بالفعل نص جاهز (مكتوب أعلاه) ، والآن نضيف حقلاً فقط مدينتكفلنسم المتغير: $ city. وهكذا في نموذج إدخال البيانات ، بعد:

بريدك الالكتروني:


يضيف:

مدينتك:


في برنامج php، بعد، بعدما:

$ email = $ _POST ["البريد الإلكتروني"] ؛


يضيف:

$ city = $ _POST ["city"] ؛


وبالطبع ، نضيفه أيضًا إلى الطلب ، مثل هذا:

نتيجة $ = mysqli_query ("إدخال المستخدم (الاسم ، البريد الإلكتروني ، المدينة) VALUES (" $ name "،" $ email "،" $ city ")") ؛


إليك ما يجب أن تكون النتيجة النهائية:
شكل الإدخال:

اسمك:
بريدك الالكتروني:
مدينتك:


النصي:

$ name = $ _POST ["الاسم"] ؛ $ email = $ _POST ["البريد الإلكتروني"] ؛ $ city = $ _POST ["city"] ؛ نتيجة $ = mysqli_query ("إدخال المستخدم (الاسم ، البريد الإلكتروني ، المدينة) VALUES (" $ name "،" $ email "،" $ city ")") ؛ إذا ($ result == true) (صدى "تم حفظ البيانات بنجاح!" ؛) وإلا (صدى "حدث خطأ ، يرجى المحاولة مرة أخرى." ؛)


كما ترون ، لا شيء معقد! إذا لزم الأمر ، يمكنك إضافة حقل آخر ، وآخر ، وآخر ...