• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mehrere Tabellen gleichzeitig anlegen

Status
Für weitere Antworten geschlossen.

CGollhardt

Mitglied
Hi, ich habe gerade nochmal gestartet mein aktuelles Browsergame noch mal von vorne zu programmieren.
Habe mir gedacht beim Installationsscript mehrere Befehle zusammenzufassen

PHP:
	$installQuery = '
	CREATE TABLE news (
		id INTEGER NOT NULL AUTO_INCREMENT,
		time CHAR(12),
		title VARCHAR(50),
		inhalt TEXT,
		PRIMARY KEY (id)
	);
	CREATE TABLE confirmation (
		id INTEGER NOT NULL AUTO_INCREMENT,
		username VARCHAR(15),
		passwort CHAR(32),
		email VARCHAR(50),
		hash CHAR(32),
		art TINYINT,
		time CHAR(12),
		PRIMARY KEY (id)
	);
	CREATE TABLE members (
		id INTEGER NOT NULL AUTO_INCREMENT,
		username VARCHAR(15),
		passwort CHAR(32),
		email VARCHAR(50),
		lastActivity CHAR(12),
		rechte TINYINT,
		PRIMARY KEY (id)
	);
	CREATE TABLE pm (
		id INTEGER NOT NULL AUTO_INCREMENT,
		an INTEGER,
		von INTEGER,
		betreff VARCHAR(40),
		time CHAR(12),
		inhalt TEXT,
		gelesen TINYINT,
		PRIMARY KEY (id)
	);
	CREATE TABLE planeten (
		id INTEGER NOT NULL AUTO_INCREMENT,
		besitzer INTEGER,
		galaxie TINYINT,
		sonnensystem TINYINT,
		position TINYINT,
		PRIMARY KEY (id),
		INDEX (besitzer),
		INDEX (galaxie),
		INDEX (sonnensystem),
		INDEX (position)
	);';
Leider bekomme ich folgenden Fehler:
Code:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '; CREATE TABLE confirmation ( id INTEGER NOT NULL AUTO_INCRE
Ich kann mir jedoch daraus nicht beantworten, wo der Fehler liegt.

Das ist das erstemal das ich einen Querry größer als einen Befehl schreibe.

Das die Datenbank unvollständig ist weiß ich, bloß bevor ich weiter mache, möchte ich erst die Fehlerursache kennen

[edit]
Ich habe es gerade getestet, in PHP myAdmin würde der Befehl funktionieren, im Script jedoch nicht, rufe es mit mysql_query() auf
 
Zuletzt bearbeitet:
Hi CGoldhart

Das Liegt daran das PHP aus Sicherheitsgründen nur immer einen Sql Befehl durch läst.
Du mußt also jeden Sql Befehl extra abschicken.

Beispiel
PHP:
mysql_query("CREATE TABLE `attacks` (
  `id` bigint(20) NOT NULL auto_increment,
  `from_pc` smallint(6) default '0',
  `from_usr` smallint(6) default '0',
  `from_cluster` int(11) default '0',
  `to_pc` smallint(6) default '0',
  `to_usr` smallint(6) default '0',
  `to_cluster` int(11) default '0',
  `type` enum('block','hijack','scan','smash','trojan') NOT NULL default 'block',
  `option` enum('cpu','deactivate','defacement','firewall','sdk','transfer') NOT NULL default 'cpu',
  `success` tinyint(1) default '0',
  `noticed` tinyint(1) default '0',
  `time` int(11) NOT NULL default '0',
  `payload` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `from_cluster` (`from_cluster`),
  KEY `to_cluster` (`to_cluster`),
  KEY `success` (`success`)
) TYPE=MyISAM AUTO_INCREMENT=1", $handler);
 
 
mysql_query("CREATE TABLE `cboards` (
  `cluster` smallint(6) default NULL,
  `thread` int(9) NOT NULL auto_increment,
  `relative` int(9) default NULL,
  `user` smallint(6) default NULL,
  `user_name` tinytext,
  `user_cstat` smallint(6) default NULL,
  `time` varchar(10) default NULL,
  `subject` tinytext,
  `content` text,
  `box` tinyint(4) default NULL,
  PRIMARY KEY  (`thread`),
  KEY `cluster` (`cluster`),
  KEY `thread` (`thread`),
  KEY `relative` (`relative`),
  KEY `box` (`box`)
) TYPE=MyISAM AUTO_INCREMENT=1", $handler);

Und so weiter das ist ein kleiner Auzug aus dem Installer von htn Reloaded

Mfg Splasch
 
Achso,

danke für deine Hilfe.
Dann werde ich es wieder wie früher in einen array schreiben. Hatte gedacht, wenn ich die Befehle zusammenfasse, dass ich Performance einspare.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben