/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
[MySQL] UPDATE problem.
Fra : Stig Nørgaard Jepsen


Dato : 13-08-01 10:22

Hejsa,

Jeg har følgende problem:
Jeg bygger en streng op i en variabel som indeholder forskellige sæt af
felter og variabler. Et eksempel kan være en variabel der indeholder : Name
= "$Name", Surname = "$Surname"
Variablen kalder jeg så updatelist og sætter den ind i en UPDATE query.
Mit problem er bare at posten i tabellen kommer til at indeholde selve
navnet på variablen og ikke variablernes indhold. Dvs. at i Name kommer der
til at stå "$Name", hvor er der måske skulle ha' stået Jens.
Jeg har prøvet manuelt at skrive de forskellige update-sets ind istedet for
$updatelist, og så virker det uden problemer...

$updateresult = mysql_query("UPDATE Userlist
SET " . $updatelist . " WHERE UserID = '$UserID'");

Nogen forslag?

Mvh Stig Nørgaard Jepsen



 
 
Johan Holst Nielsen (13-08-2001)
Kommentar
Fra : Johan Holst Nielsen


Dato : 13-08-01 10:45

> Jeg har prøvet manuelt at skrive de forskellige update-sets ind istedet
> for $updatelist, og så virker det uden problemer...
>
> $updateresult = mysql_query("UPDATE Userlist
> SET " . $updatelist . " WHERE UserID = '$UserID'");
>
> Nogen forslag?

Måske fordi du skriver $updatelist = 'navn = "$navn"'; istedet for
$updatelist = "navn = '$navn'"?

Vis os liiiige scriptet der genererer updatelist var'en

mvh

Johan

Stig Nørgaard Jepsen (13-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 13-08-01 10:59


"Johan Holst Nielsen" <tcr480@ofir.dk> wrote in message
news:3b77a1ba$0$260$edfadb0f@dspool01.news.tele.dk...
> > Jeg har prøvet manuelt at skrive de forskellige update-sets ind istedet
> > for $updatelist, og så virker det uden problemer...
> >
> > $updateresult = mysql_query("UPDATE Userlist
> > SET " . $updatelist . " WHERE UserID = '$UserID'");
> >
> > Nogen forslag?
>
> Måske fordi du skriver $updatelist = 'navn = "$navn"'; istedet for
> $updatelist = "navn = '$navn'"?
>
> Vis os liiiige scriptet der genererer updatelist var'en

Denne køres i en while løkke, hvor den løber et array igennem. Har prøvet to
forskellige med samme resultat:
$updatelist .= current($felt) . " = \"$" . current($felt) . "\", ";
$updatelist .= current($felt) . " = '$" . current($felt) . "', ";

Og hvis jeg echo'er $updatelist bliver den henholdsvis(efter en
substr($updatelist, 0, -2):
Name = "$Name", Surname = "$Surname"
og
Name = '$Name', Surname = '$Surname'

Er det tilstrækkeligt?

Mvh Stig



Johan Holst Nielsen (13-08-2001)
Kommentar
Fra : Johan Holst Nielsen


Dato : 13-08-01 12:39

> Denne køres i en while løkke, hvor den løber et array igennem. Har prøvet
> to forskellige med samme resultat:
> $updatelist .= current($felt) . " = \"$" . current($felt) . "\", ";
> $updatelist .= current($felt) . " = '$" . current($felt) . "', ";

Du kan ikke sammensætte en variabel via "$".variabelnavn, du bliver nødt
til at smide den ind med $variabelnavn....

Ellers tror PHP at du vil smide $ ind i databasen, den kan ikke vide at du
mener den skal sammensættes til at være en variabel!

mvh

Johan

Per Thomsen (14-08-2001)
Kommentar
Fra : Per Thomsen


Dato : 14-08-01 23:06


"Stig Nørgaard Jepsen" <stigen@mail.dk> skrev i en meddelelse
news:3b77a4e0$0$302$edfadb0f@dspool01.news.tele.dk...
>
> "Johan Holst Nielsen" <tcr480@ofir.dk> wrote in message
> news:3b77a1ba$0$260$edfadb0f@dspool01.news.tele.dk...
[snip]
>
> Denne køres i en while løkke, hvor den løber et array igennem. Har
prøvet to
> forskellige med samme resultat:
> $updatelist .= current($felt) . " = \"$" . current($felt) . "\", ";
> $updatelist .= current($felt) . " = '$" . current($felt) . "', ";
>

Såvidt jeg kan set, er update list nu:
Name="\$name", Surname="\$Surmame",

Du kunne prøve med
$updatelist.= current($felt)."=\"".${current($felt)}."\",";

Jeg ville nok hellere lave noget i stil med:
foreach( $felt AS $column => $value) {
$updateArray[] = $column.'='.addslashes($value);
}
$updateList = implode(',', $updateArray);
Så skal man ikke lave noget mærklige fiks fakserier[1], for at slippe af
med det sidste komma.


> Og hvis jeg echo'er $updatelist bliver den henholdsvis(efter en
> substr($updatelist, 0, -2):
^^^^
[1] fisk-fakserier.

MVH Per Thomsen,
http://www.pert.dk/

[snip]


Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste