Avatar billede kagehuset Nybegynder
07. januar 2004 - 22:30 Der er 28 kommentarer og
3 løsninger

Indsætte flere rækker i mysql på samme tid

Hey

Har søgt lidt rundt men syns ikke jeg kan finde noget der vil virke som jeg vil, so here it goes... Jeg har en adresse liste i en mysql database og kan såmænd sagtens tilføje en ad gangen, men ville gerne kunne tilføje flere ad gangen - lidt forskelligt antal fra gang til gang...

Hvordan gør jeg det ?

mvh
Mads
Avatar billede ahv Nybegynder
07. januar 2004 - 22:31 #1
De skal tilføjes en efter en, med INSERT, det er ikke muligt at lave flere INSERTS i en mysql query.
Avatar billede jakobclausen Nybegynder
07. januar 2004 - 22:32 #2
Du er desværre nødt til at gå det en af gangen - det er ikke muligt med flere, har selv søgt efter det.
Avatar billede stingbat Nybegynder
07. januar 2004 - 22:33 #3
Er det ikke? Må vidst være noget nyt ;-)

INSERT `tabelnavn` (`felt1`, `felt2`) VALUES ('værdi1_1', 'værdi1_2');
INSERT `tabelnavn` (`felt1`, `felt2`) VALUES ('værdi2_1', 'værdi2_2');
Avatar billede stingbat Nybegynder
07. januar 2004 - 22:34 #4
Eller du kan også gøre følgende:
INSERT `tabelnavn` (`felt1`, `felt2`) VALUES ('værdi1_1', 'værdi1_2'),('værdi2_1', 'værdi2_2');
Avatar billede stingbat Nybegynder
07. januar 2004 - 22:35 #5
Ang. den første - skal selvfølgelig så være følgende hvis du skulle se den korrekte effekt:
mysql_query("INSERT `tabelnavn` (`felt1`, `felt2`) VALUES ('værdi1_1', 'værdi1_2'); INSERT `tabelnavn` (`felt1`, `felt2`) VALUES ('værdi2_1', 'værdi2_2');");
Avatar billede ahv Nybegynder
07. januar 2004 - 22:35 #6
stingbat -> Det er så vidt jeg kan se også over flere mysql queries?
Avatar billede stingbat Nybegynder
07. januar 2004 - 22:37 #7
Er da én query - både løsning 1 samt løsning 2 :-)

Kommer jo blot an på hvordan du indsætter tingene i query'en. Så længe at der er en ; betyder det at den nuværende del af query'en er færdig, og en evt. ny kan begynde
Avatar billede ahv Nybegynder
07. januar 2004 - 22:40 #8
stingbat -> Som sagt så virker det altså ikke ;p Du bragte mig faktisk itvivl jeg har lige testet, og det virker hvertfald ikke her.
Avatar billede ahv Nybegynder
07. januar 2004 - 22:41 #9
Det er korrekt der kan laves flere INSERT via PHPMyAdmin på en gang via SQL funktionen, men ikke via PHP, der skal det køres via hver sin mysql_query.
Avatar billede detox Nybegynder
07. januar 2004 - 22:41 #10
Næ, et semikolon midt i en query i php, den går ikke.
Avatar billede kagehuset Nybegynder
07. januar 2004 - 22:42 #11
Hey - så kom der sgu da gang i diskusionen... Prøver mig lige frem - men ellers må jeg jo biode i det sure æble og tilføje en ad gangen... mvh Mads
Avatar billede detox Nybegynder
07. januar 2004 - 22:43 #12
Du kan måske lave et loop, hvor du indsætter de enkelte rækker.
Avatar billede stingbat Nybegynder
07. januar 2004 - 22:44 #13
Du kan sagtens lave:
mysql_query("INSERT `tabelnavn` (`felt1`, `felt2`) VALUES ('værdi1_1', 'værdi1_2'); INSERT `tabelnavn` (`felt1`, `felt2`) VALUES ('værdi2_1', 'værdi2_2');");

eller:
mysql_query("INSERT `tabelnavn` (`felt1`, `felt2`) VALUES ('værdi1_1', 'værdi1_2'),('værdi2_1', 'værdi2_2');");

Check selv manualen :)
http://www.mysql.com/doc/en/INSERT.html

detox:
Er ikke noget nyt - ; er en SQL-standard, så jo, den virker :-)

ahv:
PHPMyAdmin benytter (vidstnok) samme metode - så, jow, det kan lade sig gøre. Og har selv haft benyttet det før.
Avatar billede ahv Nybegynder
07. januar 2004 - 22:47 #14
stingbat -> Gider du så ikke lige smække noget kode op et sted der bekræfter dig i din påstand?
Avatar billede jakoba Nybegynder
07. januar 2004 - 22:49 #15
php's mysql_query tillader kun een enkelt SQL sætning for hver query. du kan ikke sende flere med ';' imellem (og ';' tilsidst er forbudt).
Avatar billede Slettet bruger
07. januar 2004 - 22:56 #16
Jeg er overbevist om, at det kan lade sig gøre.

Øjeblik, mens jeg laver lidt research.
Avatar billede stingbat Nybegynder
07. januar 2004 - 23:02 #17
Hvis det ikke virker, har jeg et problem....

For jeg får det i hvertfald selv til at virke:
http://nt.stingbat.dk/mysql.php

Check evt. bagefter:
http://nt.stingbat.dk/phpmyadmin/
UN/PW: test
Avatar billede Slettet bruger
07. januar 2004 - 23:02 #18
Det kan lade sig gøre. Som stingbat også skriver.
INSERT INTO foo VALUES ('foo1'), ('bar1')

Indsætter 2 rækker i foo.
Avatar billede stingbat Nybegynder
07. januar 2004 - 23:03 #19
Ang. den sjove IP - kører lidt proxy igennem min Linux til min NT :)
Avatar billede stingbat Nybegynder
07. januar 2004 - 23:04 #20
Ja - virker rent faktisk på begge måder. Om man benytter den korte VALUES (...),(...) eller lange (2xINSERT)
Avatar billede tipsen Nybegynder
07. januar 2004 - 23:05 #21
Fra: http://www.mysql.com/doc/en/INSERT.html

    INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
        [INTO] tbl_name [(col_name,...)]
        VALUES ((expression | DEFAULT),...),(...),...            <-- potentielt flere poster!
        [ ON DUPLICATE KEY UPDATE col_name=expression, ... ]

Mvh Tipsen
Avatar billede ahv Nybegynder
07. januar 2004 - 23:05 #22
Jeg kan gå med til VALUES (...),(...)

men ikke din

INSERT...; INSERT....;
Avatar billede Slettet bruger
07. januar 2004 - 23:05 #23
Jeg mente det nok. Jeg kunne bare ikke lige finde dokumentation. Det var endda samme måde, jeg tænkte at det måtte kunne gøres, så hvis jeg bare havde prøvet istedet for at lede i manualen. Eller bare havde svaret.
Avatar billede stingbat Nybegynder
07. januar 2004 - 23:07 #24
Hmm... Okay - vil godt gi' mig ang. den der... Fik også lige testet igen...

Men - er sQ da en bug i PHP så i forhold til andre sprog. Du kan sagtens i ASP, C osv.
Avatar billede kagehuset Nybegynder
07. januar 2004 - 23:08 #25
hehe

Takker allesammen - vil straks se nærmere på det! I får lige lidt point!

mvh
Mads
Avatar billede fangel Nybegynder
07. januar 2004 - 23:08 #26
phpMyAdmin har en funktion på vel over 100 linier til at dele querys op i dele der kan udføres (then again, phpMyAdmin har en uendelig mængde features som er ret unødvændige)

MEN - tjek selv read_dump.php filen, det er deri det hele står... førsten en funktion til at dele - derefter en en masse kode til at løbe dele igennem...

ARG, mit kæleprojekt phpMyAdmin-lite bliver da også sværer og sværer at lave - men har fået løst backup-delen væsenligt kortere end phpMyAdmin (men måske de laver en masse tjek på det + er mere bagud-kompatible)

Morten
Avatar billede stingbat Nybegynder
07. januar 2004 - 23:10 #27
Ang. svaret mht. om man kunne indsætte flere på én gang, er det (som bevist) muligt. Dog kun vha. VALUES (...),(...) når man benytter PHP
Avatar billede Slettet bruger
07. januar 2004 - 23:11 #28
dea_pg: Vi gider ikke høre mere om det projekt i alle mulige forskellige spørgsmål. Så spændende er det heller ikke.
Avatar billede Slettet bruger
07. januar 2004 - 23:14 #29
mercur8: Måske ikke, men hvis skidtet bliver færdigt kan han trods alt bruge det til at påstå, at han har en vis kompetence indenfor PHP, MySQL og deres evne til at arbejde sammen.
Avatar billede stingbat Nybegynder
07. januar 2004 - 23:18 #30
dea_pg:
Igang med at koble op til MySQL-serveren via sockets ;) Så blir det måske lidt sjovere *G*

Forstår nu ikke pointfordelingen - men blot et bevis på at E ikke har forbedret sig, selvom man er væk i par mdr., og håber *S*
Avatar billede fangel Nybegynder
07. januar 2004 - 23:20 #31
mercur8 -> heeeey, det ser faktisk ret godt ud... og desuden er det et ret god måde at lære om PHP<->MySQL på... ;)
Og har ikke skrevet om det _så_ mange steder endnu ;) (just you wait (sagt med "worms" stemme) - når det bliver færdigt kommer den helt store propaganda (not) maskine igang...)

Morten
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester