Gå til innhold

Hvordan få foreach inn i DB?


Anbefalte innlegg

God kveld!

 

Har prøvd en god stund nå på å løse dette problemet, jeg prøver å få satt inn rader fra en dynamisk form i databasen, men får den kun til å sette inn siste linjen.

Echo funksjonen virker og viser alle de respektive linjene, men kun siste settes inn i DB.

 

<?php
$id = $_POST['id'];
$tittel = $_POST['tittel'];

include ("config.php"); 
foreach($id as $a => $b)
echo "$id[$a]  -  $tittel[$a] <br />";


 $sql ="INSERT INTO filmdb (id, tittel)
VALUES
(".$id[$a].", ".$tittel[$a].")";

if (!mysql_query($sql,$con))
 {
 die('Error: ' . mysql_error());
 }
echo "Film lagret <br \>";


?>

Endret av jvc1986
Lenke til kommentar
Videoannonse
Annonse

$sql ="INSERT INTO filmdb (id, tittel)

VALUES

(".$id[$a].", ".$tittel[$a].")";

 

 

Om tittel består av flere ord eller symboler så blir det kluss med spørringen.

 

Går ut i fra at alle id'er er et nummer.

 

Det bør være quotes på strenger, så noe sånt:

 

 $sql ="INSERT INTO filmdb (id, tittel) VALUES (".((int)$id[$a]).", '".mysql_real_escape_string($tittel[$a])."')";

Lenke til kommentar

Du mangler klammer rundt løkken din.

 

<?php
$id = $_POST['id'];
$tittel = $_POST['tittel'];

include ("config.php"); 
foreach($id as $a => $b){
echo "$id[$a]  -  $tittel[$a] <br />";


 $sql ="INSERT INTO filmdb (id, tittel)
VALUES
(".$id[$a].", ".$tittel[$a].")";

if (!mysql_query($sql,$con))
 {
 die('Error: ' . mysql_error());
 }
echo "Film lagret <br \>";
}
?>

Endret av Lycantrophe
Lenke til kommentar

Det er mye mer effektivt å gjøre alt i en query enn å kjøre samme query N antall ganger.

Syntaxen for å skrive flere rows i en query er:

 

INSERT INTO tableName(col1,col2,col3) VALUES(1,2,3),(4,5,6),(7,8,9); 

 

Sett derfor noe á:

 

$query = "INSERT INTO tableName(col1,col2,col3) VALUES";

/* for-løkke som går igjennom array og tar: */
$query += "(" . $foo[$i] . "),"

/* fjerner siste komma */

 

Er ikke sikker på om akkurat utførelsen av hvordan du printer ut VALUES blir det mest effektive, men poenget er å ta en løkke på queries N ganger er veldig ineffektivt.

 

En mer beskrivende guide finnes her (bruker en litt annen måte å fikse values-biten)-

Endret av Occi
  • Liker 1
Lenke til kommentar
  • 4 uker senere...

Det er mye mer effektivt å gjøre alt i en query enn å kjøre samme query N antall ganger.

Syntaxen for å skrive flere rows i en query er:

 

INSERT INTO tableName(col1,col2,col3) VALUES(1,2,3),(4,5,6),(7,8,9); 

Alle databaser støtter vel ikke dette? Og det er en øvre grense for hvor mange rander du kan sette inn med en insert (uten at jeg er helt sikker på nøyaktig hva den er i mysql), jeg begrenser den til 50.

Hvis ikke denne syntaksen er støttet, så bør man se på og bruke prepared statements

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...