Om bilden hamnade i albums så fanns det antagligen inget värde i $row["username"] (din sökväg blev .../albums//filename.jpg), om du inte fick någon varning för det så bör du aktivera felrapportering i PHP. Alternativt så var användarnamnet helt enkelt tomt, vilket för oss till nästa punkt. Använd hellre användaridt för att namnge mapparna, på så sätt slipper du problem med namn som inte är giltiga i ditt filsystem, kan byta namn på användare utan att deras relaterade material "försvinner" etc.
Angående dina variabler så tycks slutresultatet vara detsamma i det här fallet, men du ska alltid använda den första metoden. Med den säger du att värdet av $row["username"] ska kopieras till variabeln $username, vilket är precis vad du vill.
Den andra raden säger att du vill skapa en ny sträng utan innehåll, kopiera och konvertera innehållet i $row["username"] till en annan sträng om det inte redan var av den datatypen, slå samman dessa och placera resultatet i $username.
Att göra den metoden till en vana kan ge upphov till buggar om du inte förväntar dig att datatypen ska ändras och det kräver både mer minne och prestanda. Vill du ändra datatypen bör du göra det explicit så att läsaren förstår att input var av en annan typ.
När man kopierar en variabel i PHP skapas egentligen en referens till originalet, den faktiska kopian skapas inte förrän en av variablerna ändras. Med den första raden pekar alltså $username och $row["username"] till samma innehåll, medans det redan finns två kopior av det med den andra metoden. Se exempel nedan:
<?php
header("Content-type: text/plain");
$a = "Foo";
debug_zval_dump($a); // string(3) "Foo" refcount(2)
// Skapar en ny variabel som refereras från två platser:
// Det aktiva scopet, samt inuti funktionen debug_zval_dump()
$b = $a;
debug_zval_dump($a); // string(3) "Foo" refcount(3)
// Nu är $b en "kopia" av $a, men eftersom att de inte har
// ändrats så behandlas $b som en referens av $a. Vi ser att
// $a har ytterligare en referens.
$a = "Bar";
debug_zval_dump($a); // string(3) "Bar" refcount(2)
debug_zval_dump($b); // string(3) "Foo" refcount(2)
// Först när vi ändrar $a separeras de två.
$c = "$a";
debug_zval_dump($a); // string(3) "Bar" refcount(2)
// När vi "kopierar" $a med den andra metoden refereras den
// aldrig, istället har du skapat helt ny data, och använder
// ~ dubbelt så mycket minne.
?>
TL,DR: Quota aldrig variabler om du bara vill komma åt deras innehåll.
Skickades från m.sweclockers.com