Hur är detta möjligt?
Hej!
Kod:
echo "-- $id --";
if($id=="xxx") echo " xxx";
Resultat:
--0-- xxx
Hur är detta möjligt?
/Michael
Svara
Sv: Hur är detta möjligt?
Eftersom PHP ser $id som ett tal och försöker översätta "xxx" till ett tal men det saknar siffror och blir 0.
Testa tex:
echo (5+"xxx");
echo (5+"1xx");
Svara
Sv:Hur är detta möjligt?
ok så man kan aldrig jämföra textvariabler rakt av utan måste använda strcmp till exempel?
/Michael
Svara
Sv: Hur är detta möjligt?
Jodå, du kan jämföra textvariabler rakt av. Men om ena ledet i en jämförelse är en sträng och det andra ett tal, översätts strängen till ett tal. En sträng som inte börjar med ett tal översätts då till 0.
Svara
Sv:Hur är detta möjligt?
Så om man slarvar med datavalidering i databasen och någon klant skriver in värdet 0 i fältet Ort så får man träff på $row[ort]=="Hököpinge". Måste vara orsak till mycket huvudbry.
/Michael
Svara
Sv: Hur är detta möjligt?
1. Varför talar du om databas med utför jämförelsen i PHP?
2. Typen för fältet ort i databasen beror inte av vad man har lagt in, utan av vilken typ man har deklarerat fältet som. Vem skulle sätta INT för ett fält som skall innehålla ett ortnamn?
3. MySQL-funktionerna i PHP returnerar strängar för alla fält, även för det som är heltalsfält i databasen. Jag kan dock inte se att det skulle ge några problem.
Svara