در برنامه نویسی وارد کردن یا همان Import کردن XML به MySQL می تواند بصورت دستی انجام شود.اما, در این آموزش PHP , قصد داریم به شما نحوه insert کردن داده های فایل XML به دیتابیس MySQL را توسط PHP نشان بدیم.
Node ها یا همان تگ های داخلی فایل XML به عنوان ستون های جدول دیتابیس درنظر گرفته می شوند و بنابراین داده های هر یک از node ها به عنوان مقادیر در جدول وارد خواهند شد.
در این مثال, یک فایل input.xml دارید که شامل آیتم هایی با node های فرزند به نام های title , description , links , keywords را دارند. این فایل برای دریافت آبجکت فایل به منظور پردازش داده های XML استفاده می شود.
سپس, کد PHP هر یک از این آیتم های خوانده شده را برای دریافت node های فرزند و داده های آنها در یک حلقه تکرار می شوند. با این داده ها, کوئری insert ساخته و برای کپی داده های XML در دیتابیس اجرا می شود.
فایل داده XML
XML زیر به عنوان ورودی به اسکریپت php ما برای Import کردن XML به MySQL استفاده شده است. این فایل شامل ۳ المنت XML با node های فرزند title , description , links , keywords هستند.
همانطور که نود های فرزند به عنوان ستون های جدول دیتابیس درنظر گرفته می شود, یک جدول با همین نام ها در دیتابیس ایحاد کردیم. زمانی که این ورودی XML را تجزیه (parse) کردیم, داده های بین این node های فرزند در ستون های همنام خود در دیتابیس قرار می گیرند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?xml version="1.0" encoding="UTF-8"?> <items> <item> <title>PHP Shopping Cart with PayPal Payment Gateway Integration</title> <link>https://phppot.com/php/php-shopping-cart-with-paypal-payment-gateway-integration/</link> <description>Shopping cart checkout with payment gateway integration (PayPal) is a most wanted article for the PHP shopping cart coders. In this article, we are going to integrate PayPal payment gateway with the shopping cart.</description> <keywords>Shopping,Cart</keywords> </item> <item> <title>Responsive Contact Form with PHP</title> <link>https://phppot.com/php/responsive-contact-form-with-php/</link> <description>The responsive contact form is designed to fit various viewport in different width. I used CSS media queries to design this responsive contact form.</description> <keywords>Contact-Form, Responsive</keywords> </item> <item> <title>Loading Dynamic Content on a Bootstrap Modal using jQuery</title> <link>https://phppot.com/jquery/loading-dynamic-content-on-a-bootstrap-modal-using-jquery/</link> <description>Modal window can be shown in various ways by using jQuery, Bootstrap and others. In this tutorial, we are going to show the Bootstrap modal. </description> <keywords>Modal-Window, Bootstrap</keywords> </item> </items> |
و کد SQL برای ساخت جدول در دیتابیس :
1 2 3 4 5 6 7 |
CREATE TABLE IF NOT EXISTS `tbl_tutorials` ( `item_id` int(11) NOT NULL, `title` varchar(100) NOT NULL, `link` varchar(100) NOT NULL, `description` varchar(400) NOT NULL, `keywords` varchar(50) NOT NULL ); |
تجزیه XML و Import کردن XML به MySQL توسط PHP
در این کد PHP , ما از تابع simplexml_load_file
برای parse کردن و ساخت هندل فایل استفاده می کنیم. با استفاده از این handle
آیتم های XML در هر بار تکرار حلقه خوانده می شود. سپس کوئری insert
را با استفاده از داده های خوانده شده را می سازیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php $conn = mysqli_connect("localhost", "root", "test", "phpsamples"); $affectedRow = 0; $xml = simplexml_load_file("input.xml") or die("Error: Cannot create object"); foreach ($xml->children() as $row) { $title = $row->title; $link = $row->link; $description = $row->description; $keywords = $row->keywords; $sql = "INSERT INTO tbl_tutorials(title,link,description,keywords) VALUES ('" . $title . "','" . $link . "','" . $description . "','" . $keywords . "')"; $result = mysqli_query($conn, $sql); if (! empty($result)) { $affectedRow ++; } else { $error_message = mysqli_error($conn) . "\n"; } } ?> <h2>Insert XML Data to MySql Table Output</h2> <?php if ($affectedRow > 0) { $message = $affectedRow . " records inserted"; } else { $message = "No records inserted"; } ?> |
بعد از اضافه کردن داده ها در دیتابیس, یک پیام مبنی بر اینکه چند سطر جدید در دیتابیس اضافه شده است, به کاربر نمایش می دهیم. در صروت وجود هرگونه خطایی, متن پیام خطا به کاربر نشان داده می شود.
نمایش خروجی Import کردن XML به MySQL در PHP
این کد شرایط پیام برگشتی بعد از انجام عملیات افزودن داده های XML
در جدول دیتابیس را بررسی می کند و بنابر پیام برگشتی نتیجه کوئری insert
را با استایل های خاص خود به کاربر نمایش می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<style> body { max-width: 550px; font-family: Arial; } .affected-row { background: #cae4ca; padding: 10px; margin-bottom: 20px; border: #bdd6bd 1px solid; border-radius: 2px; color: #6e716e; } .error-message { background: #eac0c0; padding: 10px; margin-bottom: 20px; border: #dab2b2 1px solid; border-radius: 2px; color: #5d5b5b; } </style> <div class="affected-row"> <?php echo $message; ?> </div> <?php if (! empty($error_message)) { ?> <div class="error-message"> <?php echo nl2br($error_message); ?> </div> <?php } ?> |
امیدوارم از آموزش Import کردن XML به MySQL در PHP نهایت استفاده را برده باشید .
برای دانلود سورس کد کامل این آموزش از باکس دانلود استفاده کنید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید
سلام
چطور میتونم یه فایل xml مثل نمونه کد زیر رو در دیتابیس وارد کنم؟
{“Table”:[{“PersonelCode”:112543,”FieldName”:”SalaryYear”,”Caption”:”سال”,”FieldValue”:”1398″,”FieldType”:1},{“PersonelCode”:112543,”FieldName”:”SalaryMonth”,”Caption”:”ماه”,”FieldValue”:”11″,”FieldType”:1},{“PersonelCode”:112543,”FieldName”:”PslCode”,”Caption”:”كد پرسنلي”,”FieldValue”:”112543″,”FieldType”:1},{“PersonelCode”:112543,”FieldName”:”FullName”,”Caption”:” نام و نام خانوادكي”,”FieldValue”:”احمد مرادی”,”FieldType”:1},{“PersonelCode”:112543,”FieldName”:”OrganizationUnitName”,”Caption”:”نام واحد سازماني”,”FieldValue”:”دفتر آمار و اطلاعات”,”FieldType”:1},{“PersonelCode”:112543,”FieldName”:”Header”,”Caption”:”تيتر گزارش”,”FieldValue”:”شرکت “,”FieldType”:1},{“PersonelCode”:112543,”FieldName”:”BankName”,”Caption”:” نام بانك”,”FieldValue”:”صادرات”,”FieldType”:1},{“PersonelCode”:112543,”FieldName”:”BranchName”,”Caption”:” نام شعبه”,”FieldValue”:”صفائیه”,”FieldType”:1},{“PersonelCode”:112543,”FieldName”:”BranchCode”,”Caption”:” كد شعبه”,”FieldValue”:”3520″,”FieldType”:1},{“PersonelCode”:112543,”FieldName”:”AccountNumber”,”Caption”:”شماره حساب”,”FieldValue”:”01067456348″,”FieldType”:1}],”Table1″:[{“PersonelCode”:112543,”FieldName”:”MonthlyFunction”,”Caption”:”كاركرد ماهانه”,”FieldValue”:”30 روز”,”FieldType”:2},{“PersonelCode”:112543,”FieldName”:”FunctionType”,”Caption”:”نحوه كاركرد”,”FieldValue”:”روزانه”,”FieldType”:2},{“PersonelCode”:112543,”FieldName”:”UsualOverTimeTime”,”Caption”:”زمان اضافه كاري”,”FieldValue”:”0′ : 90″,”FieldType”:2},{“PersonelCode”:112543,”FieldName”:”HolidayOverTimeTime”,”Caption”:” زمان تعطيل كاري”,”FieldValue”:”0′ : 3″,”FieldType”:2},{“PersonelCode”:112543,”FieldName”:”SumDeservedVacationTime”,”Caption”:”مرخصي استحقاقي”,”FieldValue”:”‘0 : 0 – 3 روز”,”FieldType”:2}],”Table2″:[{“PersonelCode”:112543,”FieldName”:”SumSalaryAndProfit”,”Caption”:”مجموع حقوق و مزايا”,”FieldValue”:”107,084,340″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”MonthlySalary”,”Caption”:”حقوق مبنا”,”FieldValue”:”28,329,650″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”UsualOverTimeAmount”,”Caption”:”اضافه کاری عادی”,”FieldValue”:”28,216,145″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”HolidayOverTimeAmount”,”Caption”:”تعطيل كاري”,”FieldValue”:”940,538″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”WorkLawTraffic”,”Caption”:”كمك هزينه مسكن”,”FieldValue”:”6,667,614″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”WorkLawTechnicalRight”,”Caption”:”فوق العاده شيفت كاري”,”FieldValue”:”7,058,243″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”WorkLawWorkTension”,”Caption”:”فوق العاده سختي كار”,”FieldValue”:”70,200″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”WorkLawAbsorptionRight”,”Caption”:”فوق العاده جذب”,”FieldValue”:”14,763,060″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”WorkLawSoldierLinessRight”,”Caption”:”فوق العاده سرپرستي”,”FieldValue”:”2,634,840″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”WorkLawPostRight”,”Caption”:”مابه التفاوت”,”FieldValue”:”357,720″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”WorkLawAnnuityProfit”,”Caption”:”فوق العاده منطقه”,”FieldValue”:”3,735,810″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”WorkLawLaboringRightAmount”,”Caption”:”بن كارگري”,”FieldValue”:”1,900,000″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”WorkLawOffspringRightAmount”,”Caption”:”كمك هزينه عائله مندي”,”FieldValue”:”3,033,620″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”StatementOptionalTitle4″,”Caption”:”کمک هزینه تلفن همراه”,”FieldValue”:”300,000″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”StatementOptionalTitle3″,”Caption”:”کمک هزینه ایاب و ذهاب”,”FieldValue”:”2,000,000″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”مصوبه کمک هزینه خودرو”,”Caption”:”مصوبه کمک هزینه خودرو”,”FieldValue”:”8,890,140″,”FieldType”:3},{“PersonelCode”:112543,”FieldName”:”StatementOptionalTitle2″,”Caption”:”کمک هزینه غذا”,”FieldValue”:”1,276,000″,”FieldType”:3}],”Table3″:[{“PersonelCode”:112543,”FieldName”:”InsuranceAmount”,”Caption”:”بيمه تامين اجتماعي”,”FieldValue”:”7,283,550″,”FieldType”:4},{“PersonelCode”:112543,”FieldName”:”TaxAmount”,”Caption”:”ماليات”,”FieldValue”:”12,750,665″,”FieldType”:4},{“PersonelCode”:112543,”FieldName”:”SumDeduction”,”Caption”:”جمع كسور”,”FieldValue”:”20,034,215″,”FieldType”:4}],”Table4″:[{“PersonelCode”:112543,”FieldName”:”NetPayment”,”Caption”:”خالص پرداختي”,”FieldValue”:”87,050,125″,”FieldType”:5},{“PersonelCode”:112543,”FieldName”:”TaxInclusiveAmount”,”Caption”:” مشمول ماليات”,”FieldValue”:”105,003,326″,”FieldType”:5},{“PersonelCode”:112543,”FieldName”:”InsuranceInclusiveAmount”,”Caption”:”مشمول بيمه”,”FieldValue”:”104,050,720″,”FieldType”:5}],”Table5″:[{“PersonelCode”:112543,”FieldName”:”FarsiNetPayment”,”Caption”:”خالص پرداختي”,”FieldValue”:”هشتاد و هفت ميليون و پنجاه هزار و يکصد و بيست و پنج ريال”,”FieldType”:6},{“PersonelCode”:112543,”FieldName”:”OrganizationUnitName”,”Caption”:”نام واحد سازماني”,”FieldValue”:”دفتر آمار و اطلاعات”,”FieldType”:6}],”Table6″:[]}
سلام.
این یک خروجی json هست و باید ابتدا با استفاده $data = json_decode($jsondata, true); اون رو به یک آرایه تبدیل کنید و بعد آن را در یک حلقه به دیتابیس insert کنید.
قبل از آن باید جدول رو در دیتابیس ایجاد و فیلدهاش رو هم قرار بدید