Oznámení
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()
}
}