Foreach i MySQL INSERT

This is a discussion on Foreach i MySQL INSERT within the Produktion af websider ved brug af php (dk.edb.internet.webdesign.serverside.php) forum.

Foreach i MySQL INSERT

Postby The87Boy on Thu Nov 20, 2008 2:14 pm

Er det ikke muligt at indsætte flere værdier i en MySQL-database vha.
Foreach?

Altså noget ligende dette:
foreach ($ids AS $id) {
$deb = mysql_query("INSERT INTO `Id` (`id`, `fraid`, `mappeid`,
`skrevet`, `svar1`, `svar2`) VALUES ('".$id."', '".$from."', '".
$mpid."', '".$skrv."', '".$svr1."', '".$svr2."')");
}


Ovenstående er testen, men det virker ikke efter hensigten, og jeg har
testet, at $ids er et array, og at den udskriver alle id som $id
The87Boy
 
Posts: 21
Joined: Mon Sep 25, 2006 8:44 am

Re: Foreach i MySQL INSERT

Postby Dan Storm on Thu Nov 20, 2008 2:33 pm

The87Boy skrev:
> Altså noget ligende dette:
> foreach ($ids AS $id) {
> $deb = mysql_query("INSERT INTO `Id` (`id`, `fraid`, `mappeid`,
> `skrevet`, `svar1`, `svar2`) VALUES ('".$id."', '".$from."', '".
> $mpid."', '".$skrv."', '".$svr1."', '".$svr2."')");
> }
>
>
> Ovenstående er testen, men det virker ikke efter hensigten, og jeg har
> testet, at $ids er et array, og at den udskriver alle id som $id

Du må komme med nogle flere oplysninger.

Hvad forventer du der skal ske?
Hvad sker der i stedet for det forventede?

Umiddelbart vil jeg tro at du får flere linier i som bare er ens?


--
Dan Storm - storm at err0r dot dk / http://err0r.dk/

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!
Dan Storm
 
Posts: 587
Joined: Sun Sep 12, 2004 10:47 am

Re: Foreach i MySQL INSERT

Postby Johan Holst Nielsen on Fri Nov 21, 2008 1:37 am

The87Boy wrote:
> Er det ikke muligt at indsætte flere værdier i en MySQL-database vha.
> Foreach?
>
> Altså noget ligende dette:
> foreach ($ids AS $id) {
> $deb = mysql_query("INSERT INTO `Id` (`id`, `fraid`, `mappeid`,
> `skrevet`, `svar1`, `svar2`) VALUES ('".$id."', '".$from."', '".
> $mpid."', '".$skrv."', '".$svr1."', '".$svr2."')");
> }
>
>
> Ovenstående er testen, men det virker ikke efter hensigten, og jeg har
> testet, at $ids er et array, og at den udskriver alle id som $id

$ids = array();
$ids[27] =
array('from'=>'abc','mpid'=>'123','skrv'=>'a','svr1'=>'1','svr2'=>'2');
$ids[128] =
array('from'=>'dfg','mpid'=>'567','skrv'=>'b','svr1'=>'10','svr2'=>'20');

foreach($ids as $id=>$info) {
$deb = mysql_query("INSERT INTO `Id` (`id`, `fraid`, `mappeid`,
skrevet`, `svar1`, `svar2`) VALUES ('".$id."', '".$info['from']."',
'".$info['mpid']."', '".$info['skrv']."', '".$info['svr1']."',
'".$info['svr2']."')");
}

Ved ikke om det er noget ala det du forestiller dig?

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk/
Johan Holst Nielsen
 
Posts: 792
Joined: Wed Nov 26, 2003 7:08 am

Re: Foreach i MySQL INSERT

Postby The87Boy on Fri Nov 21, 2008 2:20 am

On 20 Nov., 22:33, Dan Storm wrote:
> The87Boy skrev:
>
> > Altså noget ligende dette:
> > foreach ($ids AS $id) {
> > $deb = mysql_query("INSERT INTO `Id` (`id`, `fraid`, `mappeid`,
> > `skrevet`, `svar1`, `svar2`) VALUES ('".$id."', '".$from."', '".
> > $mpid."', '".$skrv."', '".$svr1."', '".$svr2."')");
> > }
>
> > Ovenstående er testen, men det virker ikke efter hensigten, og jeg har
> > testet, at $ids er et array, og at den udskriver alle id som $id
>
> Du må komme med nogle flere oplysninger.
>
> Hvad forventer du der skal ske?
> Hvad sker der i stedet for det forventede?
>
> Umiddelbart vil jeg tro at du får flere linier i som bare er ens?

Jeg forventer, at den indsætter alle ids fra $ids med de samme
informationer ved hvert id, men den indsætter kun det første id, og så
indsætter den ikke mere
Den indsætter ikke samme id flere gange, da denne er unik
The87Boy
 
Posts: 21
Joined: Mon Sep 25, 2006 8:44 am

Re: Foreach i MySQL INSERT

Postby The87Boy on Fri Nov 21, 2008 2:21 am

On 21 Nov., 09:37, Johan Holst Nielsen wrote:
> The87Boy wrote:
> > Er det ikke muligt at indsætte flere værdier i en MySQL-database vha.
> > Foreach?
>
> > Altså noget ligende dette:
> > foreach ($ids AS $id) {
> > $deb = mysql_query("INSERT INTO `Id` (`id`, `fraid`, `mappeid`,
> > `skrevet`, `svar1`, `svar2`) VALUES ('".$id."', '".$from."', '".
> > $mpid."', '".$skrv."', '".$svr1."', '".$svr2."')");
> > }
>
> > Ovenstående er testen, men det virker ikke efter hensigten, og jeg har
> > testet, at $ids er et array, og at den udskriver alle id som $id
>
> $ids = array();
> $ids[27] =
> array('from'=>'abc','mpid'=>'123','skrv'=>'a','svr1'=>'1','svr2'=>'2');
> $ids[128] =
> array('from'=>'dfg','mpid'=>'567','skrv'=>'b','svr1'=>'10','svr2'=>'20');
>
> foreach($ids as $id=>$info) {
>    $deb = mysql_query("INSERT INTO `Id` (`id`, `fraid`, `mappeid`,
> skrevet`, `svar1`, `svar2`) VALUES ('".$id."', '".$info['from']."',
> '".$info['mpid']."', '".$info['skrv']."', '".$info['svr1']."',
> '".$info['svr2']."')");
>
> }
>
> Ved ikke om det er noget ala det du forestiller dig?

Det er det ikke, da det kun er idét, der forandres ikke de andre
variabler
The87Boy
 
Posts: 21
Joined: Mon Sep 25, 2006 8:44 am

Re: Foreach i MySQL INSERT

Postby Johan Holst Nielsen on Fri Nov 21, 2008 2:24 am

The87Boy wrote:
>> foreach($ids as $id=>$info) {
>> $deb = mysql_query("INSERT INTO `Id` (`id`, `fraid`, `mappeid`,
>> skrevet`, `svar1`, `svar2`) VALUES ('".$id."', '".$info['from']."',
>> '".$info['mpid']."', '".$info['skrv']."', '".$info['svr1']."',
>> '".$info['svr2']."')");
>>
>> }
>>
>> Ved ikke om det er noget ala det du forestiller dig?
>
> Det er det ikke, da det kun er idét, der forandres ikke de andre
> variabler

$skrv = 'foo';
$svr1 = 'bar';
$svr2 = 'bar2';
$mpid = '123';

$ids = array(1,2,3,4,5,6,7);
foreach($ids as $id) {
mysql_query("INSERT INTO `Id` (`id`, `fraid`, `mappeid`, `skrevet`,
`svar1`, `svar2`) VALUES ('".$id."', '".$from."', '".$mpid."',
'".$skrv."', '".$svr1."', '".$svr2."')");
}

Virker - med mindre du har en fejl i din SQL.

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk/
Johan Holst Nielsen
 
Posts: 792
Joined: Wed Nov 26, 2003 7:08 am

Re: Foreach i MySQL INSERT

Postby The87Boy on Fri Nov 21, 2008 2:28 am

On 21 Nov., 10:24, Johan Holst Nielsen wrote:
> The87Boy wrote:
> >> foreach($ids as $id=>$info) {
> >>    $deb = mysql_query("INSERT INTO `Id` (`id`, `fraid`, `mappeid`,
> >> skrevet`, `svar1`, `svar2`) VALUES ('".$id."', '".$info['from']."',
> >> '".$info['mpid']."', '".$info['skrv']."', '".$info['svr1']."',
> >> '".$info['svr2']."')");
>
> >> }
>
> >> Ved ikke om det er noget ala det du forestiller dig?
>
> > Det er det ikke, da det kun er idét, der forandres ikke de andre
> > variabler
>
> $skrv = 'foo';
> $svr1 = 'bar';
> $svr2 = 'bar2';
> $mpid = '123';
>
> $ids = array(1,2,3,4,5,6,7);
> foreach($ids as $id) {
>    mysql_query("INSERT INTO `Id` (`id`, `fraid`, `mappeid`, `skrevet`,
> `svar1`, `svar2`) VALUES ('".$id."', '".$from."', '".$mpid."',
> '".$skrv."', '".$svr1."', '".$svr2."')");
>
> }
>
> Virker - med mindre du har en fejl i din SQL.

Jeg har testet på alle mulige måder, om der skulle være en fejl, men
det er der ikke :( Ellers kan jeg ihvertfald ikke finde den
Er der ellers andre måder, jeg kan gøre det på?
The87Boy
 
Posts: 21
Joined: Mon Sep 25, 2006 8:44 am

Re: Foreach i MySQL INSERT

Postby Dan Storm on Fri Nov 21, 2008 2:36 am

The87Boy skrev:
> Jeg forventer, at den indsætter alle ids fra $ids med de samme
> informationer ved hvert id, men den indsætter kun det første id, og så
> indsætter den ikke mere
> Den indsætter ikke samme id flere gange, da denne er unik

Prøv at gøre således:
foreach( $ids AS $id )
{
$sql = "
INSERT INTO
Id
(
id,
fraid,
mappeid,
skrevet,
svar1,
svar2
)
VALUES
(
'".$id."',
'".$from."',
'".$mpid."',
'".$skrv."',
'".$svr1."',
'".$svr2."'
)
";
if( !mysql_query($sql) )
echo "Fejl ved id ".$id.": ".mysql_error()."
";
else
echo "Indsat id ".$id." korrekt.
";
}

og så se om den ikke skriver noget ud til dig.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk/

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!
Dan Storm
 
Posts: 587
Joined: Sun Sep 12, 2004 10:47 am

Re: Foreach i MySQL INSERT

Postby Johan Holst Nielsen on Fri Nov 21, 2008 2:37 am

The87Boy wrote:
>>
>> Virker - med mindre du har en fejl i din SQL.
>
> Jeg har testet på alle mulige måder, om der skulle være en fejl, men
> det er der ikke :( Ellers kan jeg ihvertfald ikke finde den
> Er der ellers andre måder, jeg kan gøre det på?

Du bliver nødt til at vise mig hele sourcen så... der er i hvert fald
ikke en fejl i de cirka 10 linjer jeg skrev - med mindre det er i SQL'en.

Upload evt. en .phps til din server og send et link - husk at fjerne
evt. passwords fra sourcen.

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk/
Johan Holst Nielsen
 
Posts: 792
Joined: Wed Nov 26, 2003 7:08 am

Re: Foreach i MySQL INSERT

Postby The87Boy on Fri Nov 21, 2008 2:42 am

On 21 Nov., 10:37, Johan Holst Nielsen wrote:
> The87Boy wrote:
>
> >> Virker - med mindre du har en fejl i din SQL.
>
> > Jeg har testet på alle mulige måder, om der skulle være en fejl, men
> > det er der ikke :( Ellers kan jeg ihvertfald ikke finde den
> > Er der ellers andre måder, jeg kan gøre det på?
>
> Du bliver nødt til at vise mig hele sourcen så... der er i hvert fald
> ikke en fejl i de cirka 10 linjer jeg skrev - med mindre det er i SQL'en.
>
> Upload evt. en .phps til din server og send et link - husk at fjerne
> evt. passwords fra sourcen.

Det var alligevel MySQL'en, der var fejl
Det var det andet id, jeg havde glemt en auto_increment på
The87Boy
 
Posts: 21
Joined: Mon Sep 25, 2006 8:44 am

Next

Return to Produktion af websider ved brug af php (dk.edb.internet.webdesign.serverside.php)

Who is online

Users browsing this forum: No registered users and 0 guests