[PHP] meerdere tabellen invoegen met 1 query

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Hutspot
  • Registratie: December 2000
  • Laatst online: 17-07 23:06
Ik heb een .sql bestand met daarin een aantal tabellen die in een database moeten worden geimporteerd.
Als ik dit bestand inlees en als query opgeef in php dan wordt alleen de 1e tabel geimporteerd.

Mijn vraag is, kan dit gewoon niet en moet dit met een apparte query per tabel of is het een syntax fout waarom het niet lukt?

Acties:
  • 0 Henk 'm!

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Op welke manier probeer je deze dingen in te voeren? Als je phpmyadmin gebruikt dan kun je de SQL code er heel gemakkelijk inplakken en krijg je ook een error terug als iets niet klopt :)

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 19:39
-> DT&E

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Hutspot
  • Registratie: December 2000
  • Laatst online: 17-07 23:06
De code in het .sql-bstand bestand is:

CREATE TABLE `bestanden` (
`id` bigint(20) NOT NULL auto_increment,
`path` char(250) NOT NULL default '',
`md5` char(40) NOT NULL default '',
`bookmark` int(1) NOT NULL default '0',
`note` char(250) default '',
`title` char(100) default '',
`fcdate` date NOT NULL default '1900-01-01',
`fctime` time NOT NULL default '12:00:00',
`fmdate` date NOT NULL default '1900-01-01',
`fmtime` time NOT NULL default '12:00:00',
`gelezen` int(1) NOT NULL default '0',
`typel_id` bigint(20) NOT NULL default '0',
`types_id` bigint(20) NOT NULL default '0',
`ibn` char(25) NOT NULL default '',
`infected` int(4) NOT NULL default '3',
`indextime` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `path_ixd` (`path`),
KEY `md5_idx` (`md5`)
) TYPE=MyISAM;

CREATE TABLE `hits` (
`woord_id` bigint(20) NOT NULL default '0',
`bestand_id` bigint(20) NOT NULL default '0',
PRIMARY KEY (`woord_id`,`bestand_id`)
) TYPE=MyISAM;

CREATE TABLE `typel` (
`id` bigint(20) NOT NULL auto_increment,
`type` char(100) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `typel_idx` (`type`)
) TYPE=MyISAM;

CREATE TABLE `types` (
`id` bigint(20) NOT NULL auto_increment,
`type` char(100) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `types_idx` (`type`)
) TYPE=MyISAM;


Als in myphpadmin het bestand met de hand importeer gaat het allemaal goed.
Nadat de tabellen dan geimporteerd zijn kan ik onderaan op de knop "creeer php code" klikken
maar dan krijg ik de volgende foutmelding:

Afbeeldingslocatie: http://members.home.nl/willemloman/Tweakers/sqlfout.jpg

De database is vooraf dus echt leeg dus dat kan het niet zijn
Als ik de inhoud van het bestand in php plak ziet het er zo uit maar nog steeds krijg ik maar 1 bestand geimporteerd:

$query = "CREATE TABLE `bestanden` ( `id` bigint(20) NOT NULL auto_increment, `path` char(250) NOT NULL default '', `md5` char(40) NOT NULL default '', `bookmark` int(1) NOT NULL default '0', `note` char(250) default '', `title` char(100) default '', `fcdate` date NOT NULL default '1900-01-01', `fctime` time NOT NULL default '12:00:00', `fmdate` date NOT NULL default '1900-01-01', `fmtime` time NOT NULL default '12:00:00', `gelezen` int(1) NOT NULL default '0', `typel_id` bigint(20) NOT NULL default '0', `types_id` bigint(20) NOT NULL default '0', `ibn` char(25) NOT NULL default '', `infected` int(4) NOT NULL default '3', `indextime` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`), UNIQUE KEY `path_ixd` (`path`), KEY `md5_idx` (`md5`) ) "
"CREATE TABLE `hits` ( `woord_id` bigint(20) NOT NULL default '0', `bestand_id` bigint(20) NOT NULL default '0', PRIMARY KEY (`woord_id`,`bestand_id`) ) "
"CREATE TABLE `hits` ( `woord_id` bigint(20) NOT NULL default '0', `bestand_id` bigint(20) NOT NULL default '0', PRIMARY KEY (`woord_id`,`bestand_id`) ) "
"CREATE TABLE `typel` ( `id` bigint(20) NOT NULL auto_increment, `type` char(100) NOT NULL default '', PRIMARY KEY (`id`), KEY `typel_idx` (`type`) ) "
"CREATE TABLE `types` ( `id` bigint(20) NOT NULL auto_increment, `type` char(100) NOT NULL default '', PRIMARY KEY (`id`), KEY `types_idx` (`type`) ) "
"CREATE TABLE `woorden` ( `id` bigint(20) NOT NULL auto_increment, `woord` char(100) NOT NULL default '', PRIMARY KEY (`id`), KEY `woord_idx` (`woord`) ) "
"CREATE TABLE `vragen` ( `vraag` varchar(250) default NULL, `id` int(11) NOT NULL auto_increment, `omschrijving` varchar(80) NOT NULL default '', PRIMARY KEY (`id`) ) ";

$db->query($query);

Acties:
  • 0 Henk 'm!

  • Niox
  • Registratie: Augustus 2003
  • Niet online

Niox

I'm sorry, who?

De foutmelding is toch vrij duidelijk? De tabel bestanden bestaat al.

Voer anders alleen de laatste 3 query's eens uit. Die voor 'hits', 'typel' en 'types'.

Als je alles onder controle hebt, ga je gewoon niet snel genoeg.
A man is rich in proportion to the number of things he can afford to let alone.


Acties:
  • 0 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Het feit dat de tabel écht leeg is doet natuurlijk niet af aan het feit dat ie al bestaat. Je zal hem dus moeten verwijderen, of anders gewoon de eerste query niet toepassen.

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

  • Hutspot
  • Registratie: December 2000
  • Laatst online: 17-07 23:06
Ik zei dus al dat de database echt leeg is, oftwel geen enkele tabel is aanwezig.
dat kan het dus niet zijn.
Dat ie daar over klaagt zou misschien wel kunnen komen door een fout ergens in het verhaal maar dus absoluut niet doordat vooraf de tabel al bestaat.

als ik in myphpadmin het sql bestand met de tabellen importeer gaat alles meteen goed.
Maar ik ga 's proberen om de eerste tabel te skippen.

Acties:
  • 0 Henk 'm!

  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
Zet anders eens voordat je de tabel aanmaakt het zinnetje DROP TABLE IF EXISTS, dus dat je zoiets krijgt:


code:
1
2
3
4
5
6
7
DROP TABLE IF EXISTS `types`;
CREATE TABLE `types` (
`id` bigint(20) NOT NULL auto_increment,
`type` char(100) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `types_idx` (`type`)
) TYPE=MyISAM;


edit: wel zeker weten dat je de query niet per ongeluk uitvoert natuurlijk :7

[ Voor 11% gewijzigd door Mafkees op 26-10-2006 15:06 ]

Pagina: 1