Nu hade jag tänkt att försöka mig på att skapa en gästbok i Flash m.h.a ASP och samtidigt för första gången använda en MySQL-databas som inte borde vara så svårt att komma igång med.
Men nu har jag fått problem direkt när jag har försökt att skapa ett table i min databas(db) i MySQL-Front.
CREATE TABLE `gbook` (`MID` INT (3) DEFAULT '0' NOT NULL, `name` TEXT NOT NULL, `email` TEXT, `homesite` TEXT, `message` TEXT (255) NOT NULL, PRIMARY KEY(`MID`), UNIQUE(`MID`))
Error: 1064 - You have an error in your SQL syntax near '(255) NOT NULL, PRIMARY KEY(`MID`), UNIQUE(`MID`)) ' at line 1
Nu är jag som sagt nybörjare på det här så skrik på mig om mer info behövs!
Det förstår jag inte att det skulle hjälpa då du använder ` för alla namn. Problemet är att du anger en maxstorlek på en kolumn av text-datatyp.
Det verkar onödigt att använda text på alla kolumner, det borde räcka med varchar(xxx) i de flesta fall. En varchar kan vara högst 255 tecken lång i Mysql. Att ange int(3) är bara en sak som påverkar displayformatet i vissa verktyg och inte vilka tal som kan lagras. Om du lagrar tal > 999 och försöker visa värdet i ett sådant verktyg så blir det bara konstigt så jag tycker att du kan ta bort det.
Sen så behöver du inte ha både unique och primary key på mid. Primary key innebär unique.
Ok, jag försökte byta till varchar på message, men då fick jag felmeddelande så jag tror jag struntar i att byta för tillfället, får bli nån annan gång.
Men nu har jag problem när jag ska lägga till data!
Jag får detta felmeddelande:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[TCX][MyODBC]Duplicate entry '0' for key 1
/mikael_latmask_com/V2/gbook_sign.asp, line 14
<%
Function fix(str)
str = Replace(str,"'","")
End Function
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver=MySQL;server=localhost;uid=mikael;pwd=pass;database=db"
Dim name, email, homesite, message, date
name = fix(Trim(Request("name")))
email = fix(Trim(Request("email")))
homesite = fix(Trim(Request("homesite")))
message = fix(Trim(Request("message")))
date = now()
SQL = "INSERT INTO gbook(t_name,t_email,t_homesite,t_message,t_date) VALUES('" & name & "','" & email & "','" & homesite & "','" & message & "','" & date & "')"
Connection.Execute(SQL)
Connection.Close
Set Connection = Nothing
%>
Jag antar att det har mer att göra med MySQL än ASP i detta fallet så jag fortsätter därför i denna tråden istället för att skapa en ny i ASP & VBScript-forumet.
Felet är att du har DEFAULT 0 på mid-fältet + att det är PRIMARY KEY och UNIQUE, vilket gör att det inte får finnas två rader med samma mid-värde.
Du anger inget mid-värde i din INSERT INTO..... och då får raden automatiskt värdet 0, men det värdet finns antagligen redan.
Om du sätter mid-kolumnen till auto_increment så kommer den att räkna upp värdena där automatiskt..
CREATE TABLE gbook (MID INT AUTO_INCREMENT......)
Då du inte anger något värde för MID i din insert så försöker Mysql lagra 0 (defaultvärdet) i stället.
Vid din andra insert så får du alltså duplikat i primärnyckeln.
Jag förmodar att du vill att MID skall vara en räknare? I så fall så måste du ange det när du skapar tabellen
CREATE TABLE gbook (MID INT auto_increment ... )
Du kan inte ändra en befintlig kolumn så att den blir en räknare, så om du inte vill skapa om tabellen så får du ta bort MID och lägga till den igen med auto_increment.
Hmmm, det skickas tydligen inte några variabler till ASP-filen nu(fast innan jag började med databasgrejen så fungerade det ).
Jag får fråga flashkunniga personer om hjälp.
258 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91