تخزين البيانات المتعددة في MySQL

Ali Majrashiمنذ 8 سنوات

تستطيع في PHP إضافة ، و تخزين البيانات المتعددة وذلك عن طريق بناء أكواد SQL متعددة ، و تنفيذها دفعة واحدة بواسطة إستخدام دالة mysqli_multi_query ، هذا عند التعامل مع MySQLi ، و لكن عند التعامل مع PDO تختلف الطريقة سنوضحها بالمثال.

مثال على MySQLi Object-Oriented:


<?php

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "new-DB";

// إجراء الإتصال
$conn = new mysqli($servername, $username, $password, $dbname);

// التحقق من الإتصال
if ($conn->connect_error) {
    die("فشل الإتصال: " . $conn->connect_error);
}

// لتخزين البيانات المتعددة بالجدول sql بناء عدة جمل
$sql = "INSERT INTO users (name, email)
VALUES ('Mohammed', '[email protected]');";
$sql .= "INSERT INTO users (name, email)
VALUES ('Abdullah', '[email protected]');";
$sql .= "INSERT INTO users (name, email)
VALUES ('Mansour', '[email protected]')";

// تنفيذ الإستعلام
if ($conn->multi_query($sql) === TRUE) {
    echo "تم إضافة السجلات بنجاح";
} else {
    echo "خطأ: " . $sql . "<br>" . $conn->error;
}

// إغلاق الإتصال
$conn->close();

كما في الأمثلة السابقة قمنا بعملية الإتصال ، ثم قمنا ببناء جملة SQL ، و بعدها قمنا بتنفيذ الإستعلام بقاعدة البيانات ؛ لنحصل على الرد بنجاح او فشل العملية ، الإختلاف الوحيد اننا استخدمنا conn->multi_query$ لتنفيذ مجموعة جمل SQL كاستعلام واحد بقاعدة البيانات.

عند عمل الكود بالمتصفح بنجاح سيكون الناتج كالتالي:

multi-insert.png

مثال على MySQLi Procedural:


<?php

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "new-DB";

// إجراء الإتصال
$conn = mysqli_connect($servername, $username, $password, $dbname);

// التحقق من الإتصال
if (!$conn) {
    die("فشل الإتصال: " . mysqli_connect_error());
}

// لتخزين البيانات المتعددة بالجدول sql بناء عدة جمل
$sql = "INSERT INTO users (name, email)
VALUES ('Mohammed', '[email protected]');";
$sql .= "INSERT INTO users (name, email)
VALUES ('Abdullah', '[email protected]');";
$sql .= "INSERT INTO users (name, email)
VALUES ('Mansour', '[email protected]')";

// تنفيذ الإستعلام
if (mysqli_multi_query($conn, $sql)) {
    echo "تم إضافة السجلات بنجاح";
} else {
    echo "خطأ: " . $sql . "<br>" . mysqli_error($conn);
}

// إغلاق الإتصال 
mysqli_close($conn);

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

عند عمل الكود بالمتصفح بنجاح سيكون الناتج كالتالي:

multi-insert.png

مثال على PDO:


<?php

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "new-DB";

try {
    // إجراء الإتصال
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // تعديل نوع معالج الأخطاء
	$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // بدء العملية
    $conn->beginTransaction();
    // SQL بناء جمل 
    $conn->exec("INSERT INTO users (name, email) 
    VALUES ('Mohammed', '[email protected]')");
    $conn->exec("INSERT INTO users (name, email) 
    VALUES ('Abdullah', '[email protected]')");
    $conn->exec("INSERT INTO users (name, email) 
    VALUES ('Mansour', '[email protected]')");

    // تنفيذ كامل العملية
    $conn->commit();

    echo "تم إضافة السجلات بنجاح";
}
catch(PDOException $e) {
	echo $sql . "<br>" . $e->getMessage();
}

// إغلاق الإتصال 
$conn = null;

لاحظ: في مثال PDO استخدمنا conn->beginTransaction$ بعدها قمنا بعملية بناء جمل SQL باستخدام conn->exec$ ، تستطيع بناء العدد الذي تريد من الجمل ، حيث كل جمله يتم بنائها لوحدها باستخدام الدالة ، ثم عند الإنتهاء استخدمنا conn->commit$ لتنفيذ جميع هذه الجمل جميعا كاستعلام واحد في قاعدة البيانات

عند عمل الكود بالمتصفح بنجاح سيكون الناتج كالتالي:

multi-insert.png

التعليقات (2)

ehab.elzeny:

ابداع والله تسلم ايدك تبسيط المعلومه بالشكل ده فوق الممتاز .

عمرو:

السلام عليكم 

شكرا جزيرا على المجهود المبذول وتبسيط المعلومة

كنت اريد معرفة التسجيل الى قاعدة البيانات عن طريق فورم

 

 

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !