Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Php create table

Skapad av tok124, 2014-11-03 17:20 i Webbutveckling & Programmering

6 523
7 inlägg
0 poäng
tok124
Visningsbild
P 35 Hjälte 258 inlägg
0
Hej jag försöker fixa en ett install script till min sida så man kan installera databasen när man laddar ner min hemsida. Så jag har lyckats fixa så den skapar en databas men nu när jag försöker fixa så den skapar ett table så går det inte. Och jag förstår verkligen inte varför de inte går...

Error Medelande: 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 IF NOT EXISTS download ( id int(11) NOT NULL AUTO_INCREMENT, ' at line 1

Ett stycke php-kod:
<?php
session_start();
$host = ($_POST['host']);
$dbuser = ($_POST['user']);
$dbpass = ($_POST['pass']);
$dbname = ( $_POST['dbname']);
$chardb = ($_POST['char']);
$authdb = ($_POST['auth']);
$worlddb = ($_POST['world']);


$link = mysql_connect($host, $dbuser, $dbpass) or die( " Unable to connect to server ");

$query = "CREATE DATABASE IF NOT EXISTS $dbname";
$query2 = "USE $dbname; CREATE TABLE IF NOT EXISTS download (
id int(11) NOT NULL AUTO_INCREMENT,
size varchar(50) NOT NULL DEFAULT '0',
file varchar(50) NOT NULL DEFAULT '0',
path varchar(500) NOT NULL DEFAULT '0',
uploader varchar(50) NOT NULL DEFAULT '0',
post_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
type smallint(6) NOT NULL,
PRIMARY KEY (id)
)";

if (mysql_query($query))
{
echo "Database <b>$dbname</b> created successfully <br />";
}
else
{
echo "Error in creating database: <br /><br />". mysql_error ();
}

if (mysql_query($query2)) {
echo "Table download created successfully";
} else {
echo "Error creating table: " . mysql_error();
}

$_SESSION["host"] = "$host";
$_SESSION["user"] = "$dbuser";
$_SESSION["pass"] = "$dbpass";
$_SESSION["dbname"] = "$dbname";
$_SESSION["chardb"] = "$chardb";
$_SESSION["authdb"] = "$authdb";
$_SESSION["worlddb"] = "$worlddb";
?>

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

btj
Visningsbild
P Hjälte 191 inlägg
0
Svar till tok124 [Gå till post]:
$query2 = "USE $dbname; CREATE TABLE IF NOT EXISTS download (
id int(11) NOT NULL AUTO_INCREMENT,
size varchar(50) NOT NULL DEFAULT '0',
file varchar(50) NOT NULL DEFAULT '0',
path varchar(500) NOT NULL DEFAULT '0',
uploader varchar(50) NOT NULL DEFAULT '0',
post_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
type smallint(6) NOT NULL,
PRIMARY KEY (id)
)";


Det är ju en radbrytning i strängen.. php klarar inte radbrytningar i koden. Lägg allt på en radda bara eller dela upp det i olika deklarationer ;)


Tillägg av btj 2014-11-03 17:25

dvs $query2 = "allt mitt skit i en enda lång sträng"

istället för $query2 = "allt mitt skit
sen en radbrytning"

tok124
Visningsbild
P 35 Hjälte 258 inlägg
Trådskapare
0

Svar till btj [Gå till post]:
Aha, De visste jag inte. Ska testa det :)

tok124
Visningsbild
P 35 Hjälte 258 inlägg
Trådskapare
0
Testade men det hjälpte tyvär inte. Men jag tycker de verkar som att jag inte kan använda USE $dbname; i sql queryn. Måste använda databas namnet i min SQL Connection. Vet dock inte riktigt hur de kommer funka med den första queryn då. Och jag är inte säker på om de är de som är felet men de verkar som det

Tillägg av tok124 2014-11-03 17:48

Ok. De verkar funka om jag inte kör 2 st querys i $query2 så gjorde en till query variable och de verkar funka iaf. Kanske finns bättre sätt att lösa det på. Vet inte riktigt

btj
Visningsbild
P Hjälte 191 inlägg
0
Svar till tok124 [Gå till post]:
Ah det är nog jag som var lite förhastad med. Jag tittade inte så noga på errormeddelandet så missade att det var mysql objektet som slängde det, vilket det inte hade hunnit gjort om det var syntaxfel i php koden :)



Tillägg av btj 2014-11-03 17:51

Kan du inte prefixa tabellnamnet med databasnamnet då? T.ex. mindatabas.mintabell? fungerar i MSSQL iaf :)



Tillägg av btj 2014-11-03 17:52

Så slipper du säga åt databasen i förväg vilken databas du vill använda tänkte jag ^^



Tillägg av btj 2014-11-03 17:53

Fast strunt samma, jag är van att arbeta emot flera olika databaser samtidigt så därför prefixar jag allt men har du bara 1 databas är det onödigt!

Tvillingen
Visningsbild
P 31 Hjälte 3 117 inlägg
0
Lär fungera att använda mysql_select_db() istället för USE db;. Det går förövrigt bra att skriva variabler med radbrytningar. Vid en SQL-sats skulle jag snarare säga att det är fördelaktigt på grund av att det blir läsligare. Sluta använd mysql_*-funktionerna, för de kommer att försvinna i framtida versioner, men även för att din kod kommer bli säkrare och snyggare om du väljer PDO eller MySQLi.

Jag är ond!

tok124
Visningsbild
P 35 Hjälte 258 inlägg
Trådskapare
0
Tack för alla svar :)

Forum » Datorer & IT » Webbutveckling & Programmering » Php create table

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons