Hej! Eftersom PHP ser $id som ett tal och försöker översätta "xxx" till ett tal men det saknar siffror och blir 0. ok så man kan aldrig jämföra textvariabler rakt av utan måste använda strcmp till exempel? 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. 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. 1. Varför talar du om databas med utför jämförelsen i PHP?Hur är detta möjligt?
Kod:
echo "-- $id --";
if($id=="xxx") echo " xxx";
Resultat:
--0-- xxx
Hur är detta möjligt?
/MichaelSv: Hur är detta möjligt?
Testa tex:
echo (5+"xxx");
echo (5+"1xx");Sv:Hur är detta möjligt?
/MichaelSv: Hur är detta möjligt?
Sv:Hur är detta möjligt?
/MichaelSv: Hur är detta möjligt?
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.