Avatar billede shjorth Nybegynder
17. september 2009 - 21:56 Der er 7 kommentarer og
1 løsning

Insert af flere rows (PHP)

Hejsa.

Jeg har en kode der gør flg

$q = mysql_query("SELECT * FROM biler WHERE userid = '".$user_id."'");
while($row = mysql_fetch_array($q)) {
$a = $row['c']+$row['d'];
mysql_query("INSERT INTO kort (`userid`,`next`) VALUES('".$userid."',LOALTIM())")or die(mysql_error());
}

Der kan være op til 200 resultater i den løkke, og da inserts er utrolig langsomme og låser min db, er det jo ikke optimalt.. Derfor har jeg kigget lidt på at lave multiple inserts så som:

INSERT INTO ''TABLE'' (''column1'', [''column2, ... ''])
VALUES (''value1a'', [''value1b, ...'']),
      (''value2a'', [''value2b, ...'']),
      ...
(Taget fra wikipedia)

Det vil altså sige at jeg skal have lavet en insert ude af min løkke, men jeg har ikke den fjerneste ide om hvordan jeg skal gøre det.
Jeg forestiller mig noget med arrays ? Men ligepræcis hvordan ved jeg ikke. Håber der er nogen der kan hjælpe.

Mange tak og god weekend når i når dertil :)
Avatar billede repox Seniormester
17. september 2009 - 22:03 #1
Hvad skal du med $a?
Så vidt jeg kan se opretter din løkke jo blot x antal ens rækker?
Avatar billede shjorth Nybegynder
17. september 2009 - 22:06 #2
Det var bare et eksempel på nogle udregninger der sker inde i løkken.. Men de inserts der sker i tabellen "kort" skal helst hives "ud" af løkken, da den sløver det hele meget :)
Avatar billede repox Seniormester
17. september 2009 - 23:42 #3
while()
{
    $inserts = "('".$felt1."', '".$felt2."')";
}

$sql = "INSERT INTO table (felt1, felt2) VALUES ".implode(",", $inserts);
mysql_query($sql);
Avatar billede shjorth Nybegynder
18. september 2009 - 00:41 #4
Hmm skal $inserts ikke laves som en form for array? Ellers vil den nyere vel bare erstatte den tidligere?
Avatar billede repox Seniormester
18. september 2009 - 00:56 #5
Jo, du har ret; det gik lige stærkt nok:
while()
{
    $inserts[] = "('".$felt1."', '".$felt2."')";
}
$sql = "INSERT INTO table (felt1, felt2) VALUES ".implode(",", $inserts);
mysql_query($sql);
Avatar billede shjorth Nybegynder
07. oktober 2009 - 17:35 #6
Takker smider i et svar?
Avatar billede shjorth Nybegynder
12. juni 2010 - 20:48 #7
Lukker.
Skriv hvis i vil have points
Avatar billede shjorth Nybegynder
12. juni 2010 - 20:48 #8
Nu :P
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