كيفية ادخال حقلين في query واحد ؟

  • php_arabic

السلام عليكم ورحمة الله وبركاته ,,

عندي جدول اسمه مثلا tbl

وعندي اكثر من حقل اريد ادخاله في وقت واحد

فمثلا كالتالي :

INSERT INTO `tbl` (`ID`,`name`) VALUES (1,'zahaby');
INSERT INTO `tbl` (`ID`,`name`) VALUES (2,'el3zahaby');

هذان حقلان فقط كمثال ,, فكيف ادخل آلاف الحفول في query واحد ؟


عرفت طريقة الفاصلة لكن يأتي لي خطأ 

Warning: mysql_query(): MySQL server has gone away in C:\xampp\htdocs\quran\index.php on line 6270

Warning: mysql_query(): Error reading result set's header in C:\xampp\htdocs\quran\index.php on line 6270

MySQL server has gone away

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

hatem87 أضف ردا

هنالك وقت افتراضي أقصى لتنفيذ الاستعلامات في محرك قواعد بيانات MySQL وهو بالعادة 60 ثانية فقط. وكما يبدو انك تحاول تنفيذ آلاف مؤلفة من الاستعلامات بحيث يستغرق تنفيذها وقتا يفوق الوقت الاقصى المحدد. ويطلق على هذه النوعية من المشاكل Timeout Errors.

والحل في زيادة الوقت اللازم للتنفيذ عبر تعديل ملف الاعدادت المسمى my.cnf وبما انك تستخدم سيرفر XAMPP فتتبع الخطوات التالية :

  • قم بتحديد خيار MySQL Database عبر واجهة البرنامج

  • قم بالظغط على زر Configure

  • قم بالظغط على زر Open Conf File

  • سيفتح ملف نصي

  • قم بالبحث عن ما يسمى ب wait_timeout واعطه قيمه مثلا 200 (زدها اذا تطلب الامر) وهو عدد الثواني الاقصى

  • قم بالبحث عن max_allowed_packet واعطه قيمه مثلا 32M وهو الحد الاقصى لحجم الامر الذي يتم ارساله

  • احفظ التعديلات وقم باعادة تشغيل قواعد البيانات.

كذلك انصحك باستخدام ميزة Transactions (يمكنك القراءة عنها) حتى تضمن ان الاوامر يتم تنفيذها كاملا وان فشل احدها لأي خطأ (بما فيه هذا الخطأ) يتم ارجاع قاعدة البيانات الى الحالة السابقة ومحو كل الادخالات والتعديلات التي قام بها البرنامج حتى لحظة الخطأ.

طيب وفي حالة أنني على استضافه مثلا فكيف سأعمل على هذه التغيرات ؟

hatem87 أضف ردا

في حالة الاستضافة اذا كان لا يسمح لك بتعديلها بشكل بشكل مباشر فذلك غير ممكن. اما اذا كان مسموحا فقم بالتالي :

  • اذهب الى PhpMyAdmin

  • قم بالذهاب الى قسم الاستعلامات Query

  • ادخل صيغة الامر شبيهة بالتالي :

    SET max_allowed_packet = 32M;

ادخله للقيمتان التي تحدثت عنهما بالأعلى.

كما اخبرك الاخ حاتم

هنالك حد وقتي اقصي محدد لكل استعلام و عند تخطيه ستواجه مشاكل Timeout (محدد بواسطة المستضيف في حالات الاستضافة المشتركة )

اقترح عليك ان تقسم الاستعلام لاجزاء , بامكانك القيام بـ 250 استعلام مع كل طلب كمثال !!

ما رأيك باستخدام الدوران ؟؟

<?php 

function insert($query)
{
    $myConnectionObject->query($query);
    ... 
}

/**
 * to insert
 */

$queries = [
    'first_query',
    'second_query',
    'third_query',
     ... etc
];

foreach($queries as $query)
{
    insert($query);
}

قد يفيدك :