C# týden ITnetwork summer 2020
30 % bodů zdarma na online výuku díky naší Slevové akci!
Pouze tento týden sleva až 80 % na e-learning týkající se C#

PHP importer SQL souboru

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Dnes jsem na diskusi zaznamenal dotaz po skriptu na vkládání dat do databáze, tuhle jsem se s tím také pral a tak jsem dnes vytvořil tento skript. Je nastaven na soubor o velikosti 10MB. Jde o mou prvotinu v OOP, tak se omlouvám, jestli tam budou nějaké neobjektovosti :-)

Program je v PHP, zkoušen na verzi 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();
?>

V příští lekci, Knihovna DateUtils pro český datum a čas v PHP, si vytvoříme svou první knihovnu v PHP, půjde o jednoduchou, ale překvapivě šikovnou Utility třídu pro práci s českým datem a časem.


Galerie

Program byl vytvořen v roce 2013.

 

Všechny články v sekci
Knihovny pro PHP
Program pro vás napsal David Hynek
Avatar
Jak se ti líbí článek?
1 hlasů
já jsem redaktor?
Aktivity (2)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!