Import کردن XML به MySQL در PHP
در برنامه نویسی وارد کردن یا همان 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 های فرزند در ستون های همنام خود در دیتابیس قرار می گیرند.
PHP:
<?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>
PHP:
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 را با استفاده از داده های خوانده شده را می سازیم.
PHP:
<?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 را با استایل های خاص خود به کاربر نمایش می دهد.
PHP:
<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 } ?>