tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Jak si dibi poradí s jednořádkovými importy

před 8 lety

genesis
Člen | 1

Zajímalo by mne, jak řeší dibi importy, pokud se naskytne více dotazů na jednom řádku. Co jsem se dozvěděl ze zdojáku je jen to, že kontroluje soubor řádek po řádku, pokud je na konci středník, dotaz vykoná. Co když jsou na řádku 2 dotazy? Jak se dá spolehlivě rozdělit dotaz pomocí středníku?

Samozřejmě, tohle nepůjde

<?php
$dotazy = explode(";", $input);
?>

Editoval genesis (18. 11. 2011 15:05)

před 8 lety

HosipLan
Moderator | 4693

Nijak, exportuj to standardně.

před 8 lety

Milo
Nette Core | 1119

Jak píše HosipLan, ideálně jeden dotaz na řádek a máš po starostech.

Pro 100% spolehlivost správného rozdělení bys musel udělat lexikální analýzu SQL dotazu. Pokud se jedná jen o INSERT/UPDATE, stačil by regulár cca tvaru /(.*);\s*((INSERT|UPDATE).*)/.

Případně si můžeš vytvořit driver mysqli2 cca. takto

require_once dirname(__FILE__) . '/mysqli.php';

class DibiMySqli2Driver extends DibiMySqliDriver
{
    public function query($sql)
    {
        // tady používat mysqli_multi_query()
    }
}