لائحة الطعام
مجاني
تحقق في
الرئيسي  /  البرامج الثابتة/ اضافة سجل لجدول sql php. إضافة البيانات إلى PHP

إضافة التسجيلة إلى جدول SQL php. إضافة البيانات إلى PHP

تستخدم جميع وحدات الموقع أو تطبيق الويب ، حيث تحتاج إلى إدخال وكتابة بعض البيانات (على سبيل المثال ، الاسم والعمر والعنوان وما إلى ذلك) وظيفة بسيطة في لغة mysql INSERT INTO `name_base` (الاسم ، القيمة 1 ، القيمة 2 ) القيم ('Vasya'، '1'، '2')؛

يتم إدخال جميع المتغيرات في قاعدة البيانات وفقًا للقيم التي حددناها في الأقواس الأولى. من المهم النظر في ترميز البرنامج النصي للمعالج وقاعدة البيانات وملف التكوين. يُنصح باستخدام ترميز UTF-8 الأكثر شيوعًا.

يجب أن يؤخذ في الاعتبار أن هناك طريقتين للكتابة في قاعدة البيانات.

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

على سبيل المثال:
توجد أربع خلايا في جدول قاعدة البيانات. هذا يعني أنه يجب إدراج جميع المتغيرات الأربعة بين قوسين بعد عنصر VALUE (..). وشيء آخر: إذا كان المتغير غير موجود ، فلنفترض أن هذا معامل اختياري. ثم نكتب قيمة فارغة بين علامتي الاقتباس "" ،

"INSERT INTO` name_base` VALUES (NULL،` ". $ Name." ``، ``، `2`)"؛ // يتم كتابة القيمة الفارغة الثالثة بين علامتي الاقتباس

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

الطريقة الثانيةإذا تم إدراج جميع الخلايا بعد اسم قاعدة البيانات بعد الاستعلام INSERT INTO `name_base` (...). تمت مناقشة مثال أعلى قليلاً. إذا نسيت ، فلنكتب مرة أخرى:

"INSERT INTO` name_base` (` name`، `value`،` value2`) VALUES (NULL، `". $ Name. "` `،` `،` 2`) "؛

هنا قمنا بإدراج جميع الخلايا (الاسم ، القيمة 1 ، القيمة 2). وإذا أضفت خليتين إضافيتين إلى جدول قاعدة البيانات ، فلن يلزم تغيير بناء جملة الاستعلام. ولكن إذا لم نكن بحاجة إلى إضافة مرة واحدة في طلب واحد للمتغيرات الإضافية للغاية التي نحتاجها لتلك الخلايا الجديدة جدًا التي تم إنشاؤها.

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

الكتابة php إلى قاعدة بيانات MySQL. أمثلة عملية

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

أولاً ، لنقم بإنشاء جدول msg في قاعدة بيانات تحتوي على أربع خلايا. في الخلية الأولى نكتب معرف التعليق. عدد الأحرف في الخلية ، حتى عشرة أحرف ، باستخدام معلمة الزيادة التلقائية. هو - هي المعلمة التلقائيةسيتغير في كل مرة تضيف فيها تعليقًا إلى +1.

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

لكن في حالتنا ، سوف نضع في اعتبارنا أن الزوار لن يكتبوا نصوصًا ضخمة. وبالتالي سنقيد أنفسنا وسنصلح ألفي حرف باستخدام المعامل varchar لكتابة قيم السلسلة.

في الخلية الأخيرة سنكتب تاريخ إدخال نص التعليق. سنكتب بتنسيق عددي بالثواني باستخدام وقت وظيفة التاريخ والوقت الحالي () ؛ للتبسيط ، سنقوم بتعيين الوظيفة على المتغير $ time = time () ؛ ودعنا ننشئ خلية في قاعدة البيانات. دعنا نسميها الوقت مع المعلمة int (للقيم الرقمية). دعنا نكتب عدد الأحرف - ويفضل أن يكون أحد عشر حرفًا (بهامش صغير للمستقبل :-).

تفريغ قاعدة البيانات كما يلي:

بنية الجدول `msg` - إنشاء جدول إذا لم يكن EXISTS` msg` (` id` int (10) NOT NULL AUTO_INCREMENT، `name` char (250) NOT NULL،` coment` varchar (2000) NOT NULL، `time` int (11) NOT NULL ، PRIMARY KEY (`id`)) Engine = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1 ؛

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

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

للبدأ استعلام إلحاق SQL دخول جديدعلى الطاولة:

أدخل إلى المستخدمين (تسجيل الدخول ، اجتياز) قيم ("TestUser"، "123456")

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

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

تحديث المستخدمين SET login = "TestUser2" ، تمرير = "1234560" حيث تسجيل الدخول = "TestUser"

هذا الاستعلام أكثر تعقيدًا ، لأنه يحتوي على البنية " أين"، ولكن المزيد عنها أدناه. يأتي الأمر أولاً" تحديث"متبوعًا باسم الجدول ، متبوعًا بـ" جلس"نصف قيم جميع الحقول التي نريد تغييرها. سيكون الأمر بسيطًا ، لكن السؤال الذي يطرح نفسه:" ما هو السجل الذي يجب تحديثه؟". لهذا هناك" أين". في هذه الحالة ، نقوم بتحديث السجل ، الحقل" تسجيل الدخول"ما يهم" TestUser". يرجى ملاحظة أنه إذا كان هناك العديد من هذه السجلات ، إذن بالتأكيد سيتم تحديث كل شيء! هذا مهم جدًا لفهمه ، وإلا فإنك تخاطر بفقدان طاولتك.

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

تحديث المستخدمين SET login = "TestUser2" ، تمرير = "1234560" WHERE id< 15 AND login="TestUser"

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

وأخيرا ، واحدة بسيطة استعلام SQL لحذف السجلات من جدول:

حذف من المستخدمين حيث تسجيل الدخول = "TestUser2"

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

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

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

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

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

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

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

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

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

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

  • اسمهو اسم مجالك. سيتم عرضه في أعلى طاولتك.
  • يكتب- هنا يمكنك ضبط نوع الحقل. على سبيل المثال ، نختار فارشارلأننا هنا نحتاج إلى إدخال سلسلة باسم (يحتوي على أحرف وليس أرقام).
  • الطول / القيم- تُستخدم لتعيين الحد الأقصى لطول إدخالك في هذا الحقل.
  • فهرس- نستخدم الفهرس "Primary" لمجالنا "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 D ata 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) ؛ // تنفيذ الاستعلام باستخدام البيانات التي حددناها للتو // تقوم طريقة التنفيذ () بإرجاع 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سيساوي "جون" في نهاية هذا البرنامج النصي. تذكر أن PHP تقيم محتويات البرنامج النصي قبل تشغيله.

إذا قمت بتغيير البرنامج النصي الخاص بك عن طريق استبدال ربطعلى ال ربط القيمة، تضيف إلى قاعدة بيانات MySQLسيتم تجاهل "Thom Vial" مرتين في قاعدة البيانات وسيتم تجاهل 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) (صدى "تم حفظ البيانات بنجاح!" ؛) وإلا (صدى "حدث خطأ ، يرجى المحاولة مرة أخرى." ؛)


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

التعليقات تم نقلها من المدونة

سيرجي
09/14/2016 الساعة 01:25
مساء الخير!
أنا مهتم بهذا السؤال: ما أسهل طريقة لتنظيم تخزين البيانات وإعدادات البرامج دون استخدام قاعدة بيانات؟ لا أريد أن أكون مقيدًا بـ MySQL أو Access ..

مشرف
09/14/2016 الساعة 22:14
مرحبا!

الخصائص. الإعدادات
التطبيق
ملف XML
التسلسل
حاول اختيار شيء من القائمة.

نيكولاي
09/16/2016 الساعة 02:28
مرحبًا ، كيفية إزالة الصف المميز في dataGridVIew من dataGridVIew و phpMyAdmin.

PhpMyAdmin؟ هذا مجرد غلاف للعمل مع قاعدة البيانات ، هل يمكن أن توضح؟

نيكولاي
09/18/2016 الساعة 02:24
تحتاج الصف المحدد لإزالته من DataGridView ومن قاعدة البيانات.

مشرف
09/19/2016 الساعة 07:00
كيفية حذف صف في قاعدة بيانات Mysql - مقال مضاف.

نيكولاي
09/20/2016 الساعة 09:20
شكرا جزيلا.

ديما
09/20/2016 الساعة 10:24
مرحبا هل يمكنك من هنالا تنفذ عبر DataGridView ، ولكن عبر ComboBox؟ إذا كان الأمر كذلك ، فكيف؟ شكرا لك.

مشرف
09/22/2016 الساعة 03:21
مرحبا. مثال:

GENNADY
09/22/2016 الساعة 18:25
لماذا أدخل النص التالي في قاعدة البيانات System.Windows.Forms.TextBox ، نص: ge

بالمناسبة ، هذا (ge) في نهاية هذا الجين مكتوب ، على الرغم من أن النص محدد في إعدادات الجدول. يجب أن تكون كلمة الجين مناسبة أكثر ، أحضر هذا الجدول إلى برنامجي واتضح أنه يعرض لي كل هذا النص غير الضروري

مشرف
09.24.2016 الساعة 04:17
على الأرجح ، تمت كتابة استعلام SQL بشكل غير صحيح ، على سبيل المثال:

في textBox1 ، أدخل الاسم: Gena.

استعلام SQL: "إدراج في قيم اسم الجدول (textBox1، ..)"؛ النتيجة: System.Windows.Forms.TextBox

وتحتاج إلى تمرير: "أدخل قيم اسم الجدول (textBox1.Text، ..)" ؛
النتيجة: الجين

GENNADY
09.24.2016 الساعة 18:41
هذه طريقة العمل. شكرا لك

سيرجي
09/25/2016 الساعة 11:51
مرحبا. وكيف يتم تنفيذ الإضافة إلى قاعدة البيانات عبر TextBox؟

مشرف
09/26/2016 الساعة 20:53
كل شيء هو نفسه من حيث المبدأ. على سبيل المثال ، لنأخذ المثال الأخير ، حيث تحتاج:

// إنشاء معلمات وإضافتها إلى المجموعة cmd.Parameters.AddWithValue ("@ Name"، textBox1.Text) ؛ cmd.Parameters.AddWithValue ("@ LastName"، textBox2.Text) ؛

الآن المعلمات: Name و LastName تلقي القيم التي تم إدخالها في مربعات النص ونقلها إلى قاعدة البيانات

لينارا
09/27/2016 الساعة 17:45
مرحبًا ، كيف يتم تمييز الصف المميز في dataGridVIew و phpMyAdmin؟

مشرف
09/29/2016 الساعة 02:06
لا أعرف كيف يمكن عمل السطر المميز في phpMyAdmin. وفي dataGridView ، على سبيل المثال ، يمكن القيام بذلك باستخدام حدث SelectionChanged.

PSH
09/30/2016 الساعة 03:48
2 لينارا:
إذا كانت هذه هي الطريقة التي تريد تحرير السلاسل بها ، فاختر أداة مثل HediSQL ، وقم بتعديل وتعديل السلاسل.

2admin
يوم جيد! شكرا على المواد - كل شيء مذكور بشكل رائع)
سؤال: أقوم بإضافة بيانات مع هذا الاستعلام (اختبار واحد):

String sql = "INSERT INTO users (` FIO`، `Tour`،` Count`، `Cost`،` Date`، `Passport`،` Birth`) VALUES ("Kolyan"، "Moscow"، "1 + 1 "، 1100،" 2011-11-11 "،" 1111 1111 "،" 11/9/1900 ") ؛" ؛

يتم إدخال البيانات كل شيء على ما يرام ، ولكن في قاعدة البيانات (mysql) بدلاً من الأبجدية السيريلية هناك "؟؟؟؟".

يقول الاستوديو المرئي أن System.String عبارة عن تسلسل Unicode.

حاول أيضًا:

تغيير قاعدة البيانات `test` COLLATE" koi8r_general_ci "؛ ALTER TABLE `users` COLLATE =" koi8r_general_ci "؛ ALTER DATABASE `test` COLLATE" utf8_unicode_ci "؛ ALTER TABLE `users` COLLATE =" utf8_unicode_ci "؛

لكنها لا تساعد ..
ما يمكن ان يكون خطأ؟ ترميز مختلف VS و DB؟ أو ماذا؟
يمكن أن ترسل ما تقرأ / تغيير.
شكرا لك

مشرف
01.10.2016 الساعة 09:49
مرحبا.

في قاعدة البيانات (وفي الجدول) يكون الترتيب هو utf_general_ci

هل توجد مثل هذه المقارنة؟ ربما utf8_general_ci؟

عادة ، يتم إنشاء قاعدة بيانات Mysql عن طريق اختيار مقارنة utf8_general_ci ، لذلك لا توجد مشاكل مع الأبجدية السيريلية ، ما لم يكن العميل بالطبع لا يأتي إلى الخادم.

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

عند الاتصال عبر .net ، يستخدم الموصل (الافتراضي) latin1 ، لذلك تحتاج أحيانًا إلى تحديد تشفير utf8 بشكل صريح في سلسلة الاتصال:

MySqlConnection mycon ؛ mycon = MySqlConnection جديد ("الخادم = 127.0.0.1 ؛ uid = vasya ؛ pwd = 123 ؛ قاعدة البيانات = اختبار ؛ Charset = utf8 ؛") ؛ // MySqlConnectionStringBuilder: mysqlCSB.CharacterSet = "utf8" ؛

PSH
01.10.2016 الساعة 11:34
أنت على حق ، وصفتك ، utf8_general_ci!
نعم لقد ساعدت ؛ Charset = utf8؛
شكرا جزيلا!

سيرجي
02.10.2016 الساعة 11:02
شكرا على مثال العمل المطلوب. سؤال
لقد أنشأت حقلاً نصيًا أود إدخال عنوان IP الخاص بقاعدة البيانات فيه ، لكنني لا أعرف كيفية استبدال هذه البيانات هنا

سلسلة conStr = " [البريد الإلكتروني محمي]؛ المستخدم = اختبار ؛ "+
"قاعدة البيانات = اختبار ؛ كلمة المرور = اختبار ؛" ؛
من فضلك قل لي كيفية إدراج البيانات من الحقول النصية في نموذج windows في هذا البناء….

مشرف
10/03/2016 الساعة 11:50
"[البريد الإلكتروني محمي]؛ المستخدم = ...
بشكل عام ، من الأفضل استخدام الخصائص ، كما في هذه المقالة ، أو طريقة String.Format () بدلاً من هذه السلسلة.

OLGA2203
05/15/2017 الساعة 20:14

سلسلة الاتصال = "الخادم = 127.0.0.1 ؛ المنفذ = 3306 ؛ قاعدة البيانات = قاعدة ؛ مصدر البيانات = المضيف المحلي ؛ المستخدم = الجذر ؛" ؛ MySqlConnection con = new MySqlConnection (Connect)؛ con.Open () ؛ // تأسيس اتصال بقاعدة البيانات. MySqlCommand cmd = جديد MySqlCommand () ؛ cmd.CommandText = @ ”INSERT INTO tovar (المعرف ، الفئة ، الاسم ، العلامة التجارية ، السعر ، الصورة ، الحجم ، اللون ، المادة ، العدد) VALUES (pr،Category،Name،TradeMark،Price،Photo، @ الحجم ، @ اللون ، @ المواد ، @ العد) "؛ cmd.Parameters.AddWithValue ("@ pr" ، عداد) ؛ cmd.Parameters.AddWithValue (“@ Category”، comboBox1.SelectedItem.ToString ())؛ cmd.Parameters.AddWithValue (“@ Name”، textBox1.Text) ؛ cmd.Parameters.AddWithValue (“@ TradeMark” ، textBox2.Text) ؛ cmd.Parameters.AddWithValue (“@ Price”، Convert.ToInt32 (textBox4.Text)) ؛ cmd.Parameters.AddWithValue (“@ Photo”، textBox3.Text)؛ cmd.Parameters.AddWithValue (“@ Size”، textBox6.Text)؛ cmd.Parameters.AddWithValue (“@ Color”، textBox5.Text) ؛ cmd.Parameters.AddWithValue (“@ Material”، ​​textBox8.Text)؛ cmd.Parameters.AddWithValue (“@ Count”، Convert.ToInt32 (textBox7.Text)) ؛ cmd.Connection = يخدع ؛ cmd.ExecuteNonQuery () ، MessageBox.Show ("كانت الإضافة ناجحة" ، "تمت الإضافة بنجاح" ، MessageBoxButtons.OK ، MessageBoxIcon.Asterisk) ؛

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