Avatar billede big_ossi Nybegynder
23. januar 2009 - 10:22 Der er 19 kommentarer og
1 løsning

Hjælp til at dele en $_get streng og indsætte den i mysql

Hej

Har en $_get streng som ser ud som denne:
?udtrak=12,23,54,21,45,31,27,99,43,23

Hvordan får jeg den delt op og sat i databasen så de bliver sat ind i hver sin række ?
Avatar billede majbom Novice
23. januar 2009 - 10:56 #1
$dit_array = explode($_GET['udtrak']);
$size = count($dit_array);
for($i=0;$i<$size;$i++){
  mysql_query("insert into din_tabel(tal) values('$dit_array[$i]') or die(mysql_error());
}
Avatar billede majbom Novice
23. januar 2009 - 10:56 #2
hov

$dit_array = explode($_GET['udtrak']);

skal være

$dit_array = explode(",", $_GET['udtrak']);
Avatar billede big_ossi Nybegynder
23. januar 2009 - 11:30 #3
Takker, det var lige det jeg skulle bruge ;)
hvis du svare så er der points
Avatar billede coderdk Praktikant
23. januar 2009 - 11:57 #4
I én insert:

$ids = explode( ",", $_GET['udtrak'] );
$res = array();
foreach ($ids as $id)
{
  $res[] = '('.$id.')';
}
$ids = implode( ",", $res );
$sql = "INSERT INTO din_tabel (feltnavn) VALUES " . $ids;
mysql_query( $sql );
Avatar billede coderdk Praktikant
23. januar 2009 - 11:59 #5
eller totalt snyd:

mysql_query("insert into din_tabel(tal) values("  str_replace(",","),(", $_GET['udtrak'] . ")") or die(mysql_error());
Avatar billede locke Nybegynder
23. januar 2009 - 12:10 #6
Skal der tages højde for sql angreb også?
Avatar billede majbom Novice
23. januar 2009 - 12:14 #7
-> coderdk - vil den ikke indsætte én række med alle tallene i stedet for en rækker for hver tal?

-> big_ossi - skal vi ikke lade den stå åben til coderdk svarer på denne hér? for så vil hans kode umiddelbart være bedre, måske lige bortset fra den der foreach :)
Avatar billede locke Nybegynder
23. januar 2009 - 12:16 #8
http://dev.mysql.com/doc/refman/5.1/en/insert.html

afsnittet omkring "multiple rows"
Avatar billede majbom Novice
23. januar 2009 - 12:25 #9
-> locke - der kan man bare se, så lærte jeg også noget nyt i dag :)

-> big_ossi - så bør du helt klart gå efter coderdk's løsning, da den kun laver et db-kald, hvorimod min laver ét for hver post i arrayet.
Avatar billede coderdk Praktikant
23. januar 2009 - 12:25 #10
splazz, Nej den sætter X rækker ind...

Ingen af mine tager højde for sql injections... dette kan f.eks. gøres sådan:

$ids = explode( ",", $_GET['udtrak'] );
$res = array();
foreach ($ids as $id)
{
  $res[] = sprintf( '(%d)', $id );
}
$ids = implode( ",", $res );
$sql = "INSERT INTO din_tabel (feltnavn) VALUES " . $ids;
mysql_query( $sql );
Avatar billede big_ossi Nybegynder
23. januar 2009 - 12:38 #11
Efter og have prøvet den sidste fra coderdk kan jeg se den kun indsætter 1 række som ser sådan her ud
(21),(24),(74)
Avatar billede coderdk Praktikant
23. januar 2009 - 13:11 #12
Så har du ' omkring?
Avatar billede big_ossi Nybegynder
24. januar 2009 - 22:39 #13
har bare dit eksempel og lagt ind så der er ikke rettet ved det
Avatar billede tmi Nybegynder
26. januar 2009 - 02:18 #14
Hvad med bare:

mysql_query("INSERT INTO din_tabel (feltnavn) VALUES ('".str_replace(",", "'),('", $_GET['udtrak'])."')");
Avatar billede majbom Novice
26. januar 2009 - 09:19 #15
-> tmi - og så lige en or die på ;)
Avatar billede big_ossi Nybegynder
14. maj 2009 - 11:49 #16
lukker
Avatar billede majbom Novice
14. maj 2009 - 12:29 #17
fik du det til at virke?
Avatar billede big_ossi Nybegynder
14. maj 2009 - 12:51 #18
Jeps bruger dette fra første indlæg.

$dit_array = explode(",", $_GET['tal']);
$size = count($dit_array);
for($i=0;$i<$size;$i++){
    funktion1($dit_array[$i],$tekst);
}
Avatar billede majbom Novice
15. maj 2009 - 21:15 #19
cool, så smider jeg et svar...
Avatar billede majbom Novice
27. juli 2009 - 21:08 #20
tak for point
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