|
| Foreach i MySQL INSERT Fra : The87Boy |
Dato : 20-11-08 14:15 |
|
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
| |
Dan Storm (20-11-2008)
| Kommentar Fra : Dan Storm |
Dato : 20-11-08 22:33 |
|
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!
| |
Johan Holst Nielsen (21-11-2008)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 21-11-08 09:37 |
|
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
| |
The87Boy (21-11-2008)
| Kommentar Fra : The87Boy |
Dato : 21-11-08 02:20 |
|
On 20 Nov., 22:33, Dan Storm <shadyz_REMOVETH...@err0r.dk> 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
| |
Dan Storm (21-11-2008)
| Kommentar Fra : Dan Storm |
Dato : 21-11-08 10:37 |
|
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()."<br />";
else
echo "Indsat id ".$id." korrekt.<br />";
}
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!
| |
The87Boy (21-11-2008)
| Kommentar Fra : The87Boy |
Dato : 21-11-08 02:21 |
|
On 21 Nov., 09:37, Johan Holst Nielsen <s...@phpgeek.dk> 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
| |
Johan Holst Nielsen (21-11-2008)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 21-11-08 10:24 |
|
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
| |
N/A (21-11-2008)
| Kommentar Fra : N/A |
Dato : 21-11-08 10:38 |
|
| |
N/A (21-11-2008)
| Kommentar Fra : N/A |
Dato : 21-11-08 10:24 |
|
| |
The87Boy (21-11-2008)
| Kommentar Fra : The87Boy |
Dato : 21-11-08 02:28 |
|
On 21 Nov., 10:24, Johan Holst Nielsen <s...@phpgeek.dk> 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å?
| |
Johan Holst Nielsen (21-11-2008)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 21-11-08 10:38 |
|
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
| |
N/A (21-11-2008)
| Kommentar Fra : N/A |
Dato : 21-11-08 10:58 |
|
| |
N/A (21-11-2008)
| Kommentar Fra : N/A |
Dato : 21-11-08 10:37 |
|
| |
The87Boy (21-11-2008)
| Kommentar Fra : The87Boy |
Dato : 21-11-08 02:42 |
|
On 21 Nov., 10:37, Johan Holst Nielsen <s...@phpgeek.dk> 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å
| |
Johan Holst Nielsen (21-11-2008)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 21-11-08 10:58 |
|
The87Boy wrote:
> On 21 Nov., 10:37, Johan Holst Nielsen <s...@phpgeek.dk> 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å
Hehe fair nok. Som Dan også skriver - så kan et output af mysql_error()
typisk hjælpe dig med den slags fejl...
evt blot
mysql_query($sql) or die(mysql_error());
Så er jeg sikker på du havde fanget fejlen betydeligt hurtigere.
--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk
| |
N/A (21-11-2008)
| Kommentar Fra : N/A |
Dato : 21-11-08 11:22 |
|
| |
The87Boy (21-11-2008)
| Kommentar Fra : The87Boy |
Dato : 21-11-08 03:17 |
|
On 21 Nov., 10:58, Johan Holst Nielsen <s...@phpgeek.dk> wrote:
> The87Boy wrote:
> > On 21 Nov., 10:37, Johan Holst Nielsen <s...@phpgeek.dk> 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å
>
> Hehe fair nok. Som Dan også skriver - så kan et output af mysql_error()
> typisk hjælpe dig med den slags fejl...
>
> evt blot
>
> mysql_query($sql) or die(mysql_error());
>
> Så er jeg sikker på du havde fanget fejlen betydeligt hurtigere.
Okay, kan den oplyse det?
| |
Johan Holst Nielsen (21-11-2008)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 21-11-08 11:22 |
|
The87Boy wrote:
>> mysql_query($sql) or die(mysql_error());
>>
>> Så er jeg sikker på du havde fanget fejlen betydeligt hurtigere.
>
> Okay, kan den oplyse det?
Den vil i hvert fald komme med en fejl som vil lede sig rigtigt.
1. Du ved det er i SQL'en der er fejl
2. Den vil formentlig fortælle at din ID ikke er unikt selvom du har sat
det til primary key.
--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk
| |
Leif Neland (21-11-2008)
| Kommentar Fra : Leif Neland |
Dato : 21-11-08 12:49 |
|
"The87Boy" <the87boy@gmail.com> skrev i en meddelelse
news:cf8e77d4-ea8b-4933-affa-0452f6b2a984@x14g2000yqk.googlegroups.com...
> 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."')");
> }
Den SQL-inject-sikrede metode, der bruger mysqli og prepared statements
$db = new mysqli("localhost", "db_username", "db_password", "db_name");
if (mysqli_connect_errno())
{
die("Connect failed: " . mysqli_connect_error());
}
$sql = "INSERT INTO `Id` (`id`, `fraid`, `mappeid`,`skrevet`, `svar1`,
`svar2`) values (?,?,?,?,?,?)
if ($stmt = $db->prepare($sql))
{
$stmt->bind_param("iiisss", $id, $from, $mpid, $skrv,$svr1,$svr2);
foreach($ids as $id) {
$stmt->execute();
}
$stmt->close();
}
else
{
die("Could not prepare SQL statement: $sql");
}
$mysqli->close();
Leif
| |
|
|