Trenger SQL Syntaks hjelp!

Cisse

Medlem
God kveld godtfolk!

Jeg driver med utvikling av en bloggtjeneste. Men nå har jeg kommet til det stadiet der jeg skal installere MySQL tabellene med et eneste script.

Jeg er ikke den beste i SQL Syntaksen for å opprette tabeller. Det er ikke snakk om fler enn 7-10 tabeller som skal skrives inn.

Kan noen hjelpe meg?

Post et svar her eller send en PM så sier jeg tabellstrukturen jeg vil ha.

Trenger ingen andre verk, men en fordel at du kan opprette tabeller KUN via kode!
 

drlinux

Konsulent i PHP og Linux
Hei,

Jeg kan ta et slikt betalt oppdrag, men hvis du har tabelldefinisjonene (feks. for Wordpress e.l.) som SQL allerede, så skal det nok gå å poste disse fra feks phpMyAdmin.

Hvis du ikke har såpass, så har det nok ikke så mye for seg å bare opprette noen tabeller utifra en løs spesifikasjon ("vil ha felt for tittel, ingress, kommentarer" etc.). Det meste av koden ligger i hvordan de skal brukes, ikke opprettes.
 

Cisse

Medlem
Dette er noe jeg ikke har et budsjett på, men det jeg skal er å ha ren SQL syntaks inn i et script. Kan vise det jeg har tenkt til å gjøre i en snutt under.

Dette er en fil i bloggtjenesten som oppreter de nødvendige tabellene UTEN noen form av phpMyAdmin eller MySQL Workbench osv...

Det som skjer at en når du trykker på "install" knappen lages tabellene!

PHP:
<?php

$query = "QUERY HER!";
$query .= "QUERY HER!";
$query .= "QUERY HER!";
$query .= "QUERY HER!";

$resultat = mysql_query($query) or die(mysql_error());

?>

Slik er tankegangen!
 

Nutz

Med lem
Du har sannsyligvis allerede laget tabellene i en av de verktøyene du nevner, - så du har "løsningen" selv der, bare å lage en dump-fil av hele basen, eller av hver enkelt tabell for å få det "ryddig". Lime inn linje for linje i det query-scriptet du har begynt på.

Ta det som hører til:
CREATE TABLE IF NOT EXISTS
 

Cisse

Medlem
Har ikke laget noen tabeller fordi problemet er at jeg er usikker på syntaksen for dette.

Kunne noen være snille å legge ut et eksempel på en syntaks som inneholder minst 3 felter? Det kan være helt random og usant, men vis meg hvordan du får et felt til å bli en PRIMARY KEY!
 

Nutz

Med lem
PHP:
DROP TABLE IF EXISTS `table1`;
CREATE TABLE `table1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `Fornavn` text NOT NULL,
  `Etternavn` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 

Cisse

Medlem
Et nytt problem.

Jeg har en Query som skal lage SELVE databasen til bloggtjenesten. Den skal KUN opprettes dersom databasen ikke eksisterer.

Fant et sted at dette er riktig query:
Kode:
CREATE DATABASE IF NOT EXIST PostON_System;
 

Nextri

Rebel
lag tabellene manuelt med phpmyadmin
Gå deretter til export og eksporter hele databasen og velg SQL som format.
Da får du skriptet du er på jakt etter. Det er litt enklere enn å skrive det hele manuelt.
 

Cisse

Medlem
Dette er det siste jeg mangler. Kan legge til at denne Connect.php fila skal brukes i mange andre filer, og for at det skal bli litt enklere så oppretter koden en DB for deg. Men da opprettes det databaser overalt om den lille syntaksen ikke er der.
 

Nutz

Med lem
Du kan møte på mye uforutsett trøbbel dersom du også skal opprette database.
Mulig det er derfor de fleste kjente CMS forutsetter at du har opprettet database og bruker med riktige rettigheter utenfor installasjonsprosessen..
 

Cisse

Medlem
Nå kommer problemene mine.

Hva er det som er feil i denne koden?

PHP:
<?php

	require_once "../Connect.php"; /*MySQL configuration and connect*/
	
	if(IsSet($_POST['install'])) {
	
		$query = "DROP TABLE IF EXISTS `Administrators`;
				  CREATE TABLE `Administrators` (
				  `AdminID` int(11) NOT NULL AUTO_INCREMENT ,
				  `FirstName` varchar (50) NOT NULL,
				  `LastName` varchar (50) NOT NULL,
				  `Username` varchar (50) NOT NULL,
				  `Password` varchar (50) NOT NULL,
				  PRIMARY KEY (`AdminID`)
				) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
				
		$query .=  "DROP TABLE IF EXISTS `Posts`;
					CREATE TABLE `Posts` (
					`PostID` int(11) NOT NULL AUTO_INCREMENT,
					`Title` varchar (100) NOT NULL,
					`Intro` text NOT NULL,
					`Body` text NOT NULL,
					`Date` varchar (100) NOT NULL,
					`Writer` int (11) NOT NULL,
					`PictureID` int (11) NOT NULL,
				   PRIMARY KEY (`PostID`)
				 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
				 
		$query .= "DROP TABLE IF EXISTS `Pictures`;
					CREATE TABLE `Pictures` (
					`PictureID` int(11) NOT NULL AUTO_INCREMENT,
					`Picture` varchar (100) NOT NULL,
					`Path` varchar (500) NOT NULL,
					`Height` varchar (100) NOT NULL,
					`Widht` varchar (100) NOT NULL,
				   PRIMARY KEY (`PictureID`)
				 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
				 
		$query .= "DROP TABLE IF EXISTS `Videos`;
					CREATE TABLE `Videos` (
					`VideoID` int(11) NOT NULL AUTO_INCREMENT,
					`Video` varchar (100) NOT NULL,
					`Path` varchar (500) NOT NULL,
					`Lenght` varchar (100) NOT NULL,
				   PRIMARY KEY (`VideoID`)
				 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
				 
		$query .= "DROP TABLE IF EXISTS `Guests`;
					CREATE TABLE `Guests` (
					`GuestID` int(11) NOT NULL AUTO_INCREMENT,
					`Name` varchar (100) NOT NULL,
					`Age` varchar (100) NOT NULL,
					`Bloglink` varchar (100) NOT NULL,
					`Password` varchar (100) NOT NULL,
				   PRIMARY KEY (`GuestID`)
				 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
				 
		$query .= "DROP TABLE IF EXISTS `Comments`;
					CREATE TABLE `Comments` (
					`CommentID` int(11) NOT NULL AUTO_INCREMENT,
					`GuestID` int(11) NOT NULL,
					`Title` varchar (100) NOT NULL,
					`Comment` text NOT NULL,
					`Date` varchar (100) NOT NULL,
					`Bloglink` varchar (100) NOT NULL,
				   PRIMARY KEY (`CommentID`)
				 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;";

		
		$result = mysql_query($query) or die(mysql_error());
		
	}
	
	if ( empty($result)) {
		
		echo "<b>An error ocurred! Please try again!";
	
	} else {
	
		echo "<h1>PostON is installed on your webserver!!!</h1><br><a href='../admin/Index.php'>Go to the admin Login!</a>";
		
	}
	
?>

Får feilmeldingen:

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 Administrators ( `AdminID` int(11) NOT NULL AUTO_INCREMENT ,' at line 2
 

typisk

Utvikler
Du kan ikke ha flere spørringer i en spørring. Del de opp.
PHP:
  $query1 = "DROP TABLE IF EXISTS `Administrators`;";
  mysql_query($query1);
  $query2 = "
                  CREATE TABLE `Administrators` ( 
                  `AdminID` int(11) NOT NULL AUTO_INCREMENT , 
                  `FirstName` varchar (50) NOT NULL, 
                  `LastName` varchar (50) NOT NULL, 
                  `Username` varchar (50) NOT NULL, 
                  `Password` varchar (50) NOT NULL, 
                  PRIMARY KEY (`AdminID`) 
                ) ENGINE=InnoDB DEFAULT CHARSET=latin1;"; 
  // osv...
 
Topp