Avatar billede orkide Nybegynder
15. april 2003 - 11:15 Der er 18 kommentarer og
1 løsning

Gem array i MySQL

Gode råd er dyrer og det betaler jeg gerne for!
jeg har fx et array der hedder
$test = array(10,20,30,40,50);

dette vil jeg gerne have gemt i en mysql database, så hvert nummer i arrayet har sin egen række!
jeg har tænkt på at lave en foreach
men hvordan laver jeg så query'et

fx
$insert = "INSERT INTO tabel (ID) VALUE";
foreach($row = $test) {
$insert .= "($row)";
}
men jeg ved det ikke fungere, jeg mangler noget
og jeg vil ikke lave et script der fx laver 6 sql-query's det vil æde serveren fuldstændig..

er der nogle gode råd??

seb
Avatar billede repox Seniormester
15. april 2003 - 11:19 #1
foreach($test as $value) {
mysql_query("INSERT INTO tabel (id) VALUES ('$value')")or Die(mysql_error());
}
Avatar billede orkide Nybegynder
15. april 2003 - 11:42 #2
jo... men desværre igen
du laver et query for hver enkel værdi der ligger i arrayet!
jeg så helst gerne en enkelt query

Seb
Avatar billede repox Seniormester
15. april 2003 - 11:44 #3
Det kan man ikke! Du bliver nød til at lave en ny query for hver værdi du smider i tabellen...
Avatar billede orkide Nybegynder
15. april 2003 - 11:46 #4
det er jeg nu ikke så sikker på!
jeg har læst forskellig at man kan udbygge sin query alt afhængig af størrelsen på sit array... dog er deres eksempler ikke særlig brugbare!!

Seb
Avatar billede repox Seniormester
15. april 2003 - 11:58 #5
hvis vi nu siger at du skriver mysql_query("INSERT INTO tabel (id) VALUES "
så har du faktisk kun et eneste felt at smide noget i og kan derfor ikke skrive
mysql_query("INSERT INTO tabel (id) VALUES ('$test[0]', '$test[1]', '$test[2]')"); for så prøver mysql først at sætte $test[0] ind i id og derefter vil den tjekke om der er et nyt felt efter id og er der ikke det får du en fejlmelding fordi du smider $test[1] ind... for php kan ikke finde ud af hvor den skal være...
Avatar billede avminarm Juniormester
15. april 2003 - 11:58 #6
kan du ikke lave det som én var:

foreach($test as $value) {
$var .= $value."|";
}
mysql_query("INSERT INTO tabel (id) VALUES ('$var')") or die (mysql_error());

så har du en variabel der er adskilt af en |
Avatar billede repox Seniormester
15. april 2003 - 12:03 #7
det kan godt være det bare er mig der har misforstået det men jeg troede at hver værdi i arrayet skulle i hver sit felt i tabellen ?
Avatar billede avminarm Juniormester
15. april 2003 - 12:50 #8
hshady>> hvis der er det - så er det mig der har misforstået ;o)
Avatar billede tipsen Nybegynder
15. april 2003 - 13:19 #9
<?php
$test = array(10,20,30,40,50);
$tmp = implode("), (", $test);

$sql = "INSERT INTO tabel (id) VALUES ($tmp)";
echo $sql;
$mysql_query($sql) or die(mysql_error());
?>
Avatar billede tipsen Nybegynder
15. april 2003 - 13:20 #10
Generel syntax for indsættelse af flere rækker i en tabel:

INSERT INTO <table> (<col1>, <col2>...) VALUES (<val1 for col1>,
val1 for col2>...), (<val2 for col1>,<val2 for col2>...)...;
Avatar billede orkide Nybegynder
16. april 2003 - 07:37 #11
Tipsen vedr. syntaxen for indsættelse af flere rækker i en tabel.
skal jeg forstå det sådan at jeg har to forskellige kolonner fx col1 & col2
mine values er så sat op med 2 forskellige values - en til col1 og en anden til col2...
hvorfor er din opsætning så at value1 både skal ind i col1 & col2???

Seb
Avatar billede orkide Nybegynder
16. april 2003 - 08:09 #12
Dette er hvad jeg har fundet på nettet

mysql> INSERT INTO tabel( col1, col2)
VALUES
    -> (
"1", "a"),
    -> (
"2", "b"),
    -> (
"3", "c"),
    -> (
"4", "d");
Query OK, 4 rows affected (0.13 sec)
Records: 4  Duplicates: 0  Warnings: 0

nu vil jeg teste om man ikke kan lave en foreach eller while statement på det array... nogen kommentarer??

Seb
Avatar billede orkide Nybegynder
16. april 2003 - 09:02 #13
jeg løste problemet!
man kan sagtens indsætte flere rows i en query
anvende dette:

INSERT INTO tabel (col1, col2) VALUES (1,1),(1,2),(1,3),(1,4)

point til mig
Avatar billede tipsen Nybegynder
16. april 2003 - 09:48 #14
Hvad er det lige ved mit svar der ikke fungerede - jeg kan ikke se nogen forskel bortset fra at du smider to felter ind og oprindeligt kun spurgte efter at smide ét felt ind!?

Ydermere har jeg integreret opsplitningen af arrayet i selve kodestumpen - er det bare fordi du ikke forstod svaret?
Avatar billede tipsen Nybegynder
16. april 2003 - 12:57 #15
Basalt set kan jeg ikke se, hvad du "har lavet"/"fundet ud af" som ikke indgår i mit svar på dit spørgsmål?
Avatar billede tipsen Nybegynder
23. april 2003 - 01:53 #16
Jeg er lidt træt af din afslutning af dette spørgsmål og vil gerne bede om en forklaring på din afvisning af mit svar og ser mig ellers nødsaget til at anmelde dig for ikke at overholde reglerne på Eksperten.dk
Avatar billede eagleeye Praktikant
28. april 2003 - 11:06 #17
orkide>>Du har fået svar på dit spørgsmål af tipsen og skal derfor give point til tipsen. Ideen med eksperten er at man giver point til dem som har givet svaret på ens spørgsmål.

Opret et spørgsmål med 60 point til tipen.

eagleeye / CoAdmin
Avatar billede fcs Novice
15. maj 2003 - 22:22 #18
Ingen reaktion fra brugeren - deaktivering

FCS/Coadmin
Avatar billede tipsen Nybegynder
15. maj 2003 - 23:44 #19
Det var nok et forladt login i forvejen at dømme efter den sidste tids aktivitet, men tak alligevel ;-)
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