IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Php importer SQL súboru

Dnes som na diskusiu zaznamenal dotaz po skriptu na vkladanie dát do databázy, túto som sa s tým tiež pral a tak som dnes vytvoril tento skript. Je nastavený na súbor o veľkosti 10MB. Ide o moju prvotinu v OOP, tak sa ospravedlňujem, či tam budú nejaké neobjektovosti :-)

Program je v PHP, skúšaný na verziu cca PHP 5.3 a je funkčný.

<?php
session_start();
header('Content-type: text/html; charset=utf-8');

class Db_importer
{
    private $report;
    private $mysqli;

    function __construct($sql_database, $sql_server, $sql_uzivatel, $sql_heslo) {
        $this->mysqli = new mysqli($sql_server, $sql_uzivatel, $sql_heslo, $sql_database);
        $this->mysqli->query("SET GLOBAL max_allowed_packet=10485760");
    }

    function prijata_data()
    {
        $sql = file_get_contents($_FILES['soubor']['tmp_name']);

        if ($this->mysqli->connect_errno) {
            $this->report = "Chyba při připojení do databáze: <br />".$this->mysqli->connect_error;
        }

        if (!$this->mysqli->multi_query($sql)) {
            $this->report = "Chyba při ukládání do databáze:<br />".$this->mysqli->error;
        }
        do {
            if ($res = $this->mysqli->store_result()) {
                var_dump($res->fetch_all(MYSQLI_ASSOC));
                $res->free();
                }
        } while ($this->mysqli->more_results() && $this->mysqli->next_result());
        if($this->report == "")
            $this->report = "Data byla do databáze úspěšně nahrána. Celkem bylo uloženo ".(number_format((($_FILES['soubor']['size'])/1024), 2, ',', ' '))."kB dat.";
        return $this->report;
    }

    function formular()
    {
        if(isset($_POST["form_ok"])) {
                $this->prijata_data();
                return $this->report;
        }
        else
        {
            return "<form method='post' enctype='multipart/form-data'>
                <span>Soubor s databází max. 10MB </span><input type='file' name='soubor' />
                <input type='submit' name='form_ok' value='Vložit' />
                </form>";
        }
    }

    function __destructor() {
        $this->mysqli->close($link);
    }

}

$db_imp = new Db_importer("nazev_databaze","serve","uzivatel","heslo");
echo $db_imp->formular();
?>

Galéria


 

Všetky články v sekcii
Knižnice pre PHP
Preskočiť článok
(neodporúčame)
Knižnica DateUtils pre český dátum a čas v PHP
Program pre vás napísal David Hynek
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
já jsem redaktor?
Aktivity