Avatar billede inshadow Nybegynder
13. august 2001 - 12:55 Der er 8 kommentarer og
1 løsning

[MySQL] UPDATE problem.

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\'\");

Her er noget af scriptet der genererer $updatelist:
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\'


Nogen forslag?

Mvh Stig Nørgaard Jepsen

Avatar billede erikjacobsen Ekspert
13. august 2001 - 13:05 #1
$updatelist .= current($felt) . \" = \\\"\" . ${current($felt)} . \"\\\", \";
Avatar billede alvion Nybegynder
13. august 2001 - 13:08 #2
Dit problem er, at en variabels indhold indsættes på det tidspunkt din assignment udføres. Du skaber et variabel navn og håber derefter at dette navn udskiftes med variablens indhold senere (i din mysql_query() funktion). Det sker bare ikke.

Følgende burde virke:

$updatelist .= current($felt) . \" = \\\"\" . eval(\"\\$\".current($felt)) . \"\\\", \";
Avatar billede alvion Nybegynder
13. august 2001 - 13:08 #3
Arrrh... Erik altså... ;-)
Avatar billede inshadow Nybegynder
13. august 2001 - 13:56 #4
Alvion>>
Får dette resultat med dit eksempel:
Parse error: parse error in /home/aw/public_html/user/create.php(37) : eval()\'d code on line 1

Hvad går der galt?
Avatar billede alvion Nybegynder
13. august 2001 - 14:19 #5
Hmm... Jeg har aldrig prøvet at bruge eval() i PHP før, så jeg formodede at det fungerede som Javascripts. Det gør den åbenbart ikke, så du kan nok ikke gøre det jeg har foreslået. Brug erik\'s eksempel istedet.
Avatar billede inshadow Nybegynder
13. august 2001 - 19:33 #6
$testvar[arr] = \"DET-DER-DU\";
$varnavn = \"testvar[arr]\";
echo $$varnavn . \"-teste<br>\";

$testo = \"DET-DER-DU\";
$vari = \"testo\";
echo $$vari . \"-testa<br>\";

Hvordan får man så fx. øverste eksempel til at fungere, hvis det er indholdet af testvar[arr] jeg vil ha\' vist?
Avatar billede erikjacobsen Ekspert
13. august 2001 - 20:09 #7
mener du $testvar[arr] eller $testvar[$arr] ?
Avatar billede inshadow Nybegynder
13. august 2001 - 20:54 #8
jeg mener $testvar[arr].
Avatar billede erikjacobsen Ekspert
13. august 2001 - 21:11 #9
Så er du nødt til

$testvar[arr] = \"DET-DER-DU\";
$varnavn = \"\\$testvar[arr]\";
eval(\"\\$ny=$varnavn;\");
echo $ny . \"-teste<br>\";

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester