Permalänk

Mysql - giltigt kolumnnamn

Hej igen!

Jag bara undrar en snabb grej. Jag vill ha ett kolumn som heter "e-post" i min tabell i mysql. Detta visar sig dock bli väldigt besvärligt när man ska sätta in grejer i denna kolumn.

insert into personer (e-post) values('person@test.se'); #1064 - 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 '-post) values('person@test.se')' at line 1

är det enklast att bara byta namn till "email" eller går det smidigt att fixa detta?

Mvh
SpindelTiger

Permalänk
Medlem

Vet inte hur det är med MySQL, men annars brukar ju hakparenteser funka, alltså:

insert into personer ([e-post]) values('person@test.se');

Visa signatur

5950X, 3090

Permalänk
Medlem
Skrivet av SpindelTiger:

Hej igen!

Jag bara undrar en snabb grej. Jag vill ha ett kolumn som heter "e-post" i min tabell i mysql. Detta visar sig dock bli väldigt besvärligt när man ska sätta in grejer i denna kolumn.

insert into personer (e-post) values('person@test.se'); #1064 - 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 '-post) values('person@test.se')' at line 1

är det enklast att bara byta namn till "email" eller går det smidigt att fixa detta?

Mvh
SpindelTiger

Insert into `personer` (`e-post`) values('person@test.se');

Borde funka under förutsättning att bindestrecket inte är problemet, ta bort det annars bara?

Visa signatur

- Åldern har tagit ut sig i form av bekvämlighet -
------- Playstation 4/5 - Nintendo Switch -------

Permalänk

Förstår inte riktigt varför du vill ha e-post, duger inte epost?
Vad har du för argument för att det ska vara e-post?

"-" i variablar brukar jag endast använda t.ex. om man har några variablar som hör ihop, men inte har samma data t.ex. (db-server, db-user, db-pass), men jag känner inte att det hör hemma i en databas.

Permalänk
Medlem

För reserverade namn, mellanslag o.s.v. så används []

t.ex. [e-post]

Visa signatur

Speldator: i7-8700k, 32GB DDR4, RTX2080
Server 1: SB 2500k, MZI -P67GD55, 32GB DDR3, Corsair MX 240GB SSD
Surface Pro 2017, Konsoler: Typ alla, Oculus Rift

Permalänk
Skrivet av backfeed:

Vet inte hur det är med MySQL, men annars brukar ju hakparenteser funka, alltså:

insert into personer ([e-post]) values('person@test.se');

Skrivet av MugiMugi:

För reserverade namn, mellanslag o.s.v. så används []

t.ex. [e-post]

Hakparanteserna verkar inte funka i det här fallet.

Skrivet av Electrix:

Insert into `personer` (`e-post`) values('person@test.se');

Borde funka under förutsättning att bindestrecket inte är problemet, ta bort det annars bara?

Bindestrecket verkar vara problemet men det du föreslår funkar. Tackar!

Skrivet av Sephinator:

Förstår inte riktigt varför du vill ha e-post, duger inte epost?
Vad har du för argument för att det ska vara e-post?

"-" i variablar brukar jag endast använda t.ex. om man har några variablar som hör ihop, men inte har samma data t.ex. (db-server, db-user, db-pass), men jag känner inte att det hör hemma i en databas.

Jag har väl inga argument annat än att jag vill lära mig. Gör man nåt fel vill man ju gärna förstå det istället för att gå runt det.

Permalänk
99:e percentilen

Det kan vara en god vana att alltid omge tabell- och kolumnnamn med backticks (grav accent, inte samma tecken som apostrof). Värdena man sätter in (i ditt fall 'person@test.se') omger man däremot med apostrofer.

Kan ha fel, rätta mig isåfall.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem

Om du är ny på MySQL tycker jag dessutom att det är enklare att göra inserts med ungefär samma syntax som SELECT, UPDATES osv osv och skippa (tabell) values (värde) helt och hållet och bara köra med SET istället: (förutsatt att du skall fortsätta använda MySQL den närmaste framtiden och inte byta till andra SQL databaser som inte har stöd för detta)

(EDIT: hmm, layouten pajades när jag klistra in här men aja)

INSERT INTO Stats SET StatsUserID = :StatsUserID, StatsUserType = :StatsUserType, StatsPage = :StatsCurrentPage, StatsIP = :StatsVisitorIP, StatsTime = NOW()

I ditt fall då:

INSERT INTO personer SET email = 'person@test.se'

Om du byter ut e-mail kolumnen mot email dvs.

Denna strukturen är mycket lättare att hålla koll på, speciellt om du skall inserta 20 rader i database så ser man direkt relationen mellan kolumn och värde istället för att ha dom separerade, dels inom olika () och dels kommaseparerade

Visa signatur

Hur kan syltkakor överleva i det vilda utan ögon?

Permalänk
Medlem

Sen bör du inte lära dig mysql eftersom det kommer försvinna inom kanske inte en snar framtid men i framtiden. Kommer ge deprecated varningar från nästa version av PHP tror jag det var.

Lär dig PDO eller mysqli från början istället. Så du inte måste lära om dig sen.

Permalänk
Skrivet av SpindelTiger:

Jag har väl inga argument annat än att jag vill lära mig. Gör man nåt fel vill man ju gärna förstå det istället för att gå runt det.

Ett dåligt inlägg av mig. Det jag ville få fram var att det är "bäst" att inte använda "-", helst endast A-Z, a-z, 0-9 och _ i tabellnamn.

Skrivet av hamre:

Sen bör du inte lära dig mysql eftersom det kommer försvinna inom kanske inte en snar framtid men i framtiden. Kommer ge deprecated varningar från nästa version av PHP tror jag det var.

Lär dig PDO eller mysqli från början istället. Så du inte måste lära om dig sen.

Jag ser ingenstans där det står att han använder PHP's mysql_*-funktioner.
Det är fortfarande samma query-språk vilka funktioner man än använder.

Men som du säger, om han använder mysql_* så är det bäst att använda MySQLi eller PDO. Jag personligen gillar mest MySQLi, eller det är väl för att jag är mest van med det.

Permalänk
Medlem
Skrivet av Sephinator:

Jag ser ingenstans där det står att han använder PHP's mysql_*-funktioner.
Det är fortfarande samma query-språk vilka funktioner man än använder.

Men som du säger, om han använder mysql_* så är det bäst att använda MySQLi eller PDO. Jag personligen gillar mest MySQLi, eller det är väl för att jag är mest van med det.

Det har du faktiskt helt rätt i. Jag som var för snabb med att anta.

Jo spelar nog ingen större roll om man väljer PDO eller mysqli. Jag valde PDO. Vet faktiskt inte varför men det kändes bra.

Permalänk
Skrivet av HurMycket:

Det kan vara en god vana att alltid omge tabell- och kolumnnamn med backticks (grav accent, inte samma tecken som apostrof). Värdena man sätter in (i ditt fall 'person@test.se') omger man däremot med apostrofer.

Kan ha fel, rätta mig isåfall.

Nej du verkar ha helt rätt i det. efter lite provande så funkar det.

Skrivet av JesperA:

Om du är ny på MySQL tycker jag dessutom att det är enklare att göra inserts med ungefär samma syntax som SELECT, UPDATES osv osv och skippa (tabell) values (värde) helt och hållet och bara köra med SET istället: (förutsatt att du skall fortsätta använda MySQL den närmaste framtiden och inte byta till andra SQL databaser som inte har stöd för detta)

(EDIT: hmm, layouten pajades när jag klistra in här men aja)

INSERT INTO Stats SET StatsUserID = :StatsUserID, StatsUserType = :StatsUserType, StatsPage = :StatsCurrentPage, StatsIP = :StatsVisitorIP, StatsTime = NOW()

I ditt fall då:

INSERT INTO personer SET email = 'person@test.se'

Om du byter ut e-mail kolumnen mot email dvs.

Denna strukturen är mycket lättare att hålla koll på, speciellt om du skall inserta 20 rader i database så ser man direkt relationen mellan kolumn och värde istället för att ha dom separerade, dels inom olika () och dels kommaseparerade

Ja ska titta på det. Störde mig nämligen på att att man inte bara tilldelade kolumnerna direkt.

Citat:
Skrivet av Sephinator:

Ett dåligt inlägg av mig. Det jag ville få fram var att det är "bäst" att inte använda "-", helst endast A-Z, a-z, 0-9 och _ i tabellnamn.

Jag ser ingenstans där det står att han använder PHP's mysql_*-funktioner.
Det är fortfarande samma query-språk vilka funktioner man än använder.

Men som du säger, om han använder mysql_* så är det bäst att använda MySQLi eller PDO. Jag personligen gillar mest MySQLi, eller det är väl för att jag är mest van med det.

Skrivet av hamre:

Det har du faktiskt helt rätt i. Jag som var för snabb med att anta.

Jo spelar nog ingen större roll om man väljer PDO eller mysqli. Jag valde PDO. Vet faktiskt inte varför men det kändes bra.

Det var iofs ett riktigt antagande fram tills för några dar sedan. Jag går en distanskurs i php och mysql och där var alla exempel i de gamla mysql-funktionerna. Så först lärde man sig det men i och med att jag gjorde om databasen passade jag på att byta upp mig till mysqli. Tur att man gjorde det säger jag bara. Det var ju mycket skönare att använda den på objekt-sättet istället för att behöva klistra in sin lilla variabel med anslutnings-resursen hela tiden.