Gå til innhold

en annen måte å skrive dette på?


Anbefalte innlegg

Skrevet

mysql_query("UPDATE $tabell_brukere SET bilde = '$_FILES[bilde][name]' WHERE navn='$_COOKIE[bruker]'"); 

 

I mysql-en blir resultatet array[name]. Finnes det en annen måte å sette opp/skrive dette på. :blush:

Videoannonse
Annonse
Skrevet (endret)

den koden er helt riktig, men jeg liker å separere spørringen fra mysql_query() slik:

$sql = "UPDATE $tabell_brukere SET bilde = '$_FILES[bilde][name]' WHERE navn='$_COOKIE[bruker]'";

og ikke bruke variabler inni hermetegn. avslutt slik: "' . $_FILES[bilde][name] . '" er du sikker på at variablene dine har de verdiene du forventer?

 

EDIT: fullstendig kode for det du prøver på slik jeg ville gjort det:

$sql = sprintf("UPDATE `%s` SET bilde = '%s' WHERE navn='%s'", 
          mysql_real_escape_string($tabell_brukere), 
          mysql_real_escape_string($_FILES[bilde][name]), 
          mysql_real_escape_string($_COOKIE[bruker]));
mysql_query($sql) or die(mysql_error());

2 ting å tenke over:

1: SQL injection

2: returnere eventuell feil i spørring med mysql_error()

Endret av hockey500
Skrevet (endret)

Får du ikke en feilmelding på den der altså?

Trodde man måtte bruke krøllparanteser slik:

$foo = "blahblah {$array['name']} lalal";

 

Men som nevnt over, du bør escape dataene før du setter dem inn.

Enten med sprintf, eller bare

 

$filename = mysql_real_escape_string($_FILES[bilde][name]);

og så

$sql = "UPDATE $tabell_brukere SET bilde = '$filename'";

 

 

Edit: for akkurat $_COOKIE så er den escapet automatisk som default (en av PHPs mest iriterende egenskaper...), men ja..

Endret av -morten
Skrevet (endret)

Nå fungerer det vettu. Var på grunn av sprintf kommandoen tror jeg.. kjekke greier ;)

tnx hockey500, kommer sikkert tilbake for mer hjelp :p

Endret av groenlid
Skrevet
Får du ikke en feilmelding på den der altså?

Trodde man måtte bruke krøllparanteser slik:

$foo = "blahblah {$array['name']} lalal";

 

Men som nevnt over, du bør escape dataene før du setter dem inn.

Enten med sprintf, eller bare

 

$filename = mysql_real_escape_string($_FILES[bilde][name]);

og så

$sql = "UPDATE $tabell_brukere SET bilde = '$filename'";

6371465[/snapback]

 

Virket det du også sa morten ;)

Skrevet

Tror aldri jeg har fått det til uten..?

$array['foo'] = 'blah';
$foo = "blah $array['foo'] blah";
echo $foo;

gir

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING on line 2

Skrevet

ja, kan godt hende det er sånn med arrays, så det kan ha vært det som var feilen i scriptet hans.. men med vanlige variabler funker det fint:

$var = "123";
echo "\$var er $var"; // $var er 123

Skrevet (endret)

Men uansett er

 

$var = '123';
echo $var.' er var';

 

ørlite grann mer effektivt (i teorien iallefall), ettersom tolkeren ikke leter etter variabler i teksten når du bruker ' i stedet for " :)

Endret av bK_Coder

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...