Gå til innhold

[Løst] variabel i update value..


Anbefalte innlegg

Videoannonse
Annonse

Får bare beskjed om syntax feil om jeg prøver som du skriver.

Det jeg prøver å få til er følgende:

 

Jeg har 20 felt som skal oppdateres inn i en table, her kalt "service"

Istedetfor å manuelt lage kode for hvert enkelt felt tenkte jeg at man kunne bruke en "while" loop som da øker med 1 for hver gang.

$start = 1;
$stopp = 20;

while ($start < $stopp)
{
$sql = "UPDATE service SET delnr$start = '$_POST[delnr$start]' WHERE serviceId  = '$_POST[serviceId]'";
$start++;

}
if (!mysql_query($sql,$con))
 {
 die('Error: ' . mysql_error());
 }

 

Jeg har da laget en variabel som heter $start og den økes med 1 etter hver loop, hadde jeg fått koden til å virke skulle det vært på en slik måte:

UPDATE service SET delnr1 = '$_POST[delnr1]', delnr2 = '$_POST[delnr2]' etc.

Endret av Actibus
Lenke til kommentar

Jeg kan ikke bruke $_POST['delnr1'] i en sql spørring, det gir syntax feil.

 

Følgende kode virker så sant start og stopp er samme, altså at den kun skal lagre en verdi, setter jeg stopp høyere lagrer den kun siste (høyeste) verdien, hvorfor?

$start = 11;
$stopp = 12;

echo $_POST['serviceId'];
while ($start <= $stopp)

{

echo $start;
$sql = "UPDATE service SET delnr$start = '$_POST[delnr4]' WHERE serviceId  = '$_POST[serviceId]'";
$start++;


}
if (!mysql_query($sql,$con))
 {
 die('Error: ' . mysql_error());
 }
echo "Servicen er blitt oppdatert";

Lenke til kommentar

Jeg kan ikke bruke $_POST['delnr1'] i en sql spørring, det gir syntax feil.

 

Følgende kode virker så sant start og stopp er samme, altså at den kun skal lagre en verdi, setter jeg stopp høyere lagrer den kun siste (høyeste) verdien, hvorfor?

$start = 11;
$stopp = 12;

echo $_POST['serviceId'];
while ($start <= $stopp)

{

echo $start;
$sql = "UPDATE service SET delnr$start = '$_POST[delnr4]' WHERE serviceId  = '$_POST[serviceId]'";
$start++;


}
if (!mysql_query($sql,$con))
 {
 die('Error: ' . mysql_error());
 }
echo "Servicen er blitt oppdatert";

 

Fordi du overskriver $sql i hver while loop.

Lenke til kommentar

Tok meg litt frihet og forbedret koden din mot MySQL-Injections, du kan jo Google å se hva det er ;)

 

$start = 11;
$stopp = 12;

echo $_POST['serviceId'];
while ($start <= $stopp)
{        
       echo $start;
       $sql = "UPDATE service SET delnr".$start." = '".mysql_real_escape_string($_POST['delnr4'])." WHERE serviceId  = '".mysql_real_escape_string($_POST['serviceId'])."'"
;
if (!mysql_query($sql,$con))
{
       die('Error: ' . mysql_error());
}
       $start++;
}

echo "Servicen er blitt oppdatert";

 

Bare å teste i vei å se om dette fungerer noe bedre :)

Endret av Gjest
Lenke til kommentar

Se der ja, virket litt bedre det :)

Takk for hjelpen!

 

Når det gjelder sikkerheten, systemet skal kun brukes på en lokal (offline) server og kun av meg selv, så ofret ikke det en tanke, men kanskje greit å venne seg til å bruke det uansett.

 

Noe forslag til hvordan jeg kan få til samme i POST funksjonen, altså for

$_POST[delnr".$start."]

Endret av Actibus
Lenke til kommentar

Se der ja, virket litt bedre det :)

Takk for hjelpen!

 

Når det gjelder sikkerheten, systemet skal kun brukes på en lokal (offline) server og kun av meg selv, så ofret ikke det en tanke, men kanskje greit å venne seg til å bruke det uansett.

 

Noe forslag til hvordan jeg kan få til samme i POST funksjonen, altså for

$_POST[delnr".$start."]

 

Skrive variabel i POST-funksjonen?

Eksempel:

$_POST['string']
$_POST['string' . $var];

Lenke til kommentar

Det virker ikke, gir syntax feil i sql funksjonen, virker hvis det hadde vært en variabel.

 

Men løste det vet å gjøre litt merarbeid:

.....
$delnr = $_POST['delnr'.$var];

også bruke $delnr istedetfor POST i SQL:

$sql = "UPDATE service SET delnr".$start'" = '$delnr' etc.

 

Det virker. Du har nok ikke gjort det riktig

Du må jo bytte ut $var med variabelen din.

 

F.eks:

$sql = "UPDATE `service` SET `delnr" . $start . "` = '" . $_POST['delnr' . $start] . "'";

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å
×
×
  • Opprett ny...