Permalänk

PHP - Ny rad i databasen?

Jag är nybörjare och håller på med PHP och MySQL.

Jag har en query som ser ut såhär:
$query = "INSERT INTO kampanj VALUES ('1','kalle','karlsson','23')";

Siffran 1 markerar att det är på rad/ID 1 i databasen som denna data ska hamna, men om man nu vill skapa en ny rad, hur gör man då? Måste jag hela tiden ta reda på vilket nummer det är som gäller eller finns det nåt speciellt man kan skriva istället för radnummret?

Permalänk

Du kan väl sätta igång auto increase i MySQL på ID? Då ökas id med ett för varje ny rad. Längesedan jag höll på med det här känns det som.

Permalänk

Ahh okej, jag ska prova. Tack!

Permalänk

Jo, exakt. Har du något på rad 1 kan du inte sätta in något nytt där. isf får du använda dig av "UPDATE", men då försvinner de data du redan har.

Annars om du ska sätta in något i en databas måste du skriva något liknande detta...

$query = "INSERT INTO kampanj VALUES ('kalle','karlsson','23') WHERE id=1";

Visa signatur

Q6600 @ 3.2GHz | 2*4 Corsair XMS2 5-5-5-12 @ 1003 | Club3D HD4850 | Asus P5Q Pro

Permalänk

Okej, så jag behöver alltså inte skapa en egen kolumn för ID utan det sköter sig självt om jag till exempel väljer kolumnen "namn" som primär eller index? (vilket av dom är det)

Permalänk
Testpilot

Du ska fortfarande ha en ID-kolumn men du behöver inte specificera den när du gör en insert om du ställt in att ID ska vara auto-increase. Sätt den också som primär.

Antingen utelämnar du bara värdet:
INSERT INTO kampanj VALUES ('','kalle','karlsson','23')

Det rekommenderade är dock att ange vilka fält man vill sätta in:
INSERT INTO kampanj (fornamn, efternamn, alder) VALUES ('kalle','karlsson','23')
På det här viset slipper du skriva om din fråga om du lägger till ett fält i tabellen.

Visa signatur

Kolla gärna in min RGB-LED-ljusstake i galleriet
[Gigabyte GA-Z97MX-Gaming 5][Intel Core i5 4690K][Corsair XMS3 16GB][Asus GeForce RTX 2060 Super Dual Evo OC]

Permalänk

Smart! Tack för hjälpen!

Permalänk

Vad gör man åt detta fel när jag försöker lägga till AUTO_INCREMENT:

Fel

SQL-fråga:

ALTER TABLE `kampanj` CHANGE `ID` `ID` INT( 4 ) NOT NULL AUTO_INCREMENT

MySQL sa: Dokumentation
#1062 - ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1' for key 'PRIMARY'

Edit:
Jag tog bort värdena som fanns i ID. Nu verkar det funka.

Permalänk
Medlem

http://www.1keydata.com/sql/

Kan rekommendera denna sida starkt för nybörjare.

Visa signatur

Rasmus

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Matte Hedström
Jo, exakt. Har du något på rad 1 kan du inte sätta in något nytt där. isf får du använda dig av "UPDATE", men då försvinner de data du redan har.

Annars om du ska sätta in något i en databas måste du skriva något liknande detta...

$query = "INSERT INTO kampanj VALUES ('kalle','karlsson','23') WHERE id=1";

Nu är du ute på 15 famnar.

Du använder inte WHERE vid INSERT.

Utan where används vid UPDATE och liknade.

Till OP:

Kör autoincrement och unik nyckel på ID kolumnen så sköter det sig själv för varje rad du INSERT i tabellen.

Visa signatur

Fractal Design Arc Svart | MSI Z68A-GD55 G3 REV B3 | Intel® Core i7 2600K, 3.4GHz, 8MB | Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE LP | MSI GeForce GTX 670 | Phanteks PH-TC14PE CPU Cooler (vit) | Corsair Power Supply 650W TX M, Modular, ATX, PS/2 | SSD (okänd tillverkare) + 2 äldre SATA2 diskar på 750 Gb, 350 gb. | OS: Microsoft Windows 10 home.

Permalänk
Medlem

vidare så kan du med lite enklare medel Administrera din MySQL databas med:

http://www.sqlbuddy.com

http://www.phpmyadmin.net

Visa signatur

Fractal Design Arc Svart | MSI Z68A-GD55 G3 REV B3 | Intel® Core i7 2600K, 3.4GHz, 8MB | Corsair 16GB (4x4096MB) CL9 1600Mhz VENGEANCE LP | MSI GeForce GTX 670 | Phanteks PH-TC14PE CPU Cooler (vit) | Corsair Power Supply 650W TX M, Modular, ATX, PS/2 | SSD (okänd tillverkare) + 2 äldre SATA2 diskar på 750 Gb, 350 gb. | OS: Microsoft Windows 10 home.