شما اینجا هستید
SQL » بازیابی دیتابیس با استفاده از php

سلام خدمت کاربران زردیس

شاید برای خیلی از دوستان سوالی پیش بیاد که چطور میتونیم با استفاده از کد های php یکی از دیتابس هامون که بکاپ گرفتیم رو بازیابی کنیم.

در ادامه با ما همراه باشید تا با نحوه انجام این کار آشنا بشید.

روش اول

این کد HTML برای ایجاد رابط کاربری با فرم آپلود فایل پشتیبان SQL پایگاه داده MySQL و ارسال آن برای بازیابی پایگاه داده است. پس از بازیابی موفقیت آمیز، کاربر را با پاسخی که از PHP با استفاده از این UI برگردانده شده است، تأیید می کنیم.

<?php
if (! empty($response)) {
    ?>
<div class="response <?php echo $response["type"]; ?>
    ">
    <?php echo nl2br($response["message"]); ?>
</div>
<?php
}
?>
<form method="post" action="" enctype="multipart/form-data"
    id="frm-restore">
    <div class="form-row">
        <div>Choose Backup File</div>
        <div>
            <input type="file" name="backup_file" class="input-file" />
        </div>
    </div>
    <div>
        <input type="submit" name="restore" value="Restore"
            class="btn-action" />
    </div>
</form>

کد php برای بازیابی پایگاه داده MySQL

این کد PHP حباب فایل آپلود شده را دریافت می کند و نوع فایل را قبل از پردازش بازیابی پایگاه داده تایید می کند. اگر فایل آپلود شده با  پسوند .sql  نباشد ، پاسخ خطا برای کاربر ارسال می شود.

در غیر این صورت، فایل تجزیه خواهد شد و تمام پرس و جوها را در یک آرایه ذخیره می کند. سپس این کوئری ها در یک حلقه برای بازیابی پایگاه داده اجرا می شوند.

<?php
$conn = mysqli_connect("localhost", "root", "test", "phppot_examples");
if (! empty($_FILES)) {
    // Validating SQL file type by extensions
    if (! in_array(strtolower(pathinfo($_FILES["backup_file"]["name"], PATHINFO_EXTENSION)), array(
        "sql"
    ))) {
        $response = array(
            "type" => "error",
            "message" => "Invalid File Type"
        );
    } else {
        if (is_uploaded_file($_FILES["backup_file"]["tmp_name"])) {
            move_uploaded_file($_FILES["backup_file"]["tmp_name"], $_FILES["backup_file"]["name"]);
            $response = restoreMysqlDB($_FILES["backup_file"]["name"], $conn);
        }
    }
}

function restoreMysqlDB($filePath, $conn)
{
    $sql = '';
    $error = '';
    
    if (file_exists($filePath)) {
        $lines = file($filePath);
        
        foreach ($lines as $line) {
            
            // Ignoring comments from the SQL script
            if (substr($line, 0, 2) == '--' || $line == '') {
                continue;
            }
            
            $sql .= $line;
            
            if (substr(trim($line), - 1, 1) == ';') {
                $result = mysqli_query($conn, $sql);
                if (! $result) {
                    $error .= mysqli_error($conn) . "\n";
                }
                $sql = '';
            }
        } // end foreach
        
        if ($error) {
            $response = array(
                "type" => "error",
                "message" => $error
            );
        } else {
            $response = array(
                "type" => "success",
                "message" => "Database Restore Completed Successfully."
            );
        }
    } // end if file exists
    return $response;
}
?>

دانلود فایل کامل اسکریپت بالا

 

روش دوم

<?php
$connection = mysqli_connect('localhost','root','','test');
$filename = 'backup.sql';
$handle = fopen($filename,"r+");
$contents = fread($handle,filesize($filename));
$sql = explode(';',$contents);
foreach($sql as $query){
  $result = mysqli_query($connection,$query);
  if($result){
      echo '<tr><td><br></td></tr>';
      echo '<tr><td>'.$query.' <b>SUCCESS</b></td></tr>';
      echo '<tr><td><br></td></tr>';
  }
}
fclose($handle);
echo 'Successfully imported';
?>





اخبار زردیس | جدیدترین اخبار ایران و جهان