Oznámení
Funkce pro vytváření databáze
před 5 lety
- l564
- Člen | 4
Zdravím,
rád bych se zeptal kde přesně mám chybu v kódu
public static function InstallTable(array $data){
$jmenoTabulky = reset(array_keys($data));
$hodnoty = implode(',', reset(array_values($data)));
dibi::query("CREATE TABLE [%s](%s)", $jmenoTabulky, $hodnoty);
return true;
}
Jedná se o třídu pro interní účely systému kde vytváření tabulek je na denním pořádku, proto jsem se rozhodl že zakročím po funkci. Jedná se o první návrh, proto jistě vím že funkci budu dále upravovat.
Data se zadávají nějak takto:
Trida::InstallTable(
array('Ahoj' =>
array('nazev VARCHAR (50)', 'rok_vydani YEAR')
)
);
A parsování klíčů a spojení hodnot funguje výborně ale při spuštění funkce mi nahlásí že SQL dotaz je chybný.
Zkoušel jsem verzi i následující a to však se pouští bez chyb, ale zdá se mi že je to v rozporu s Dibi
public static function InstallTable(array $data){
$jmenoTabulky = reset(array_keys($data));
$hodnoty = implode(',', reset(array_values($data)));
dibi::query("CREATE TABLE [".$jmenoTabulky."](".$hodnoty.")");
return true;
}
Děkuji všem z rady
před 5 lety
- Milo
- Nette Core | 1119
Zdá se mi to takové podivné, ale cca takhle. Máš tam špatný modifikátor pro identifikátor:
list($table, $columns) = each($data);
dibi::test('CREATE TABLE %n', $table, '(%sql)', implode(', ', $columns));
a pokud si seš jistý, že definice sloupců neobsahuje nějaký bordel,
můžeš použít modifikátor %SQL
.
před 5 lety
- l564
- Člen | 4
Díky moc, funguje bez chyby.