nilsh Skrevet 14. desember 2009 Del Skrevet 14. desember 2009 (endret) Hei! Nå har jeg atter en dag brukt alvorlig mange timer på en "tulleting"! Skal sjekke om et valgt brukernavn ikke er i bruk fra før.. $brukernavn = mysql_real_escape_string($_POST['brukernavn']); $sql = "SELECT `brukernavn` FROM `Montorer` WHERE `brukernavn` = '{$brukernavn}'"; echo $sql . "<p>"; //Ser fin ut! kjører jeg denne i phpmyadmin returnerer den ett treff $resultat = mysql_query($sql, $tilkobling) or die(mysql_error()); $num_rows = mysql_num_rows($resultat); echo $num_rows; //Skriver ut "0"........ if($num_rows != 0) { echo "<br>"; die("<br>Brukernavnet er opptatt<br><br><a href='#' onClick='history.go(-1)'>Velg et annet brukernavn!</a>"); } Hvorfor får jeg 0 ut fra $num_rows???? Noen som ser noe her..? Mener jeg har gjort dette før.. Endret 14. desember 2009 av nilsh Lenke til kommentar
Warz Skrevet 14. desember 2009 Del Skrevet 14. desember 2009 Ser ut som koden er riktig, har du prøvd å skrive ut resultatet? Får du ut noe hvis du gjør det? while ($row = mysql_fetch_array($resultat)) { echo $row['brukernavn']; } Lenke til kommentar
nilsh Skrevet 14. desember 2009 Forfatter Del Skrevet 14. desember 2009 Ser ut som koden er riktig, har du prøvd å skrive ut resultatet? Får du ut noe hvis du gjør det? while ($row = mysql_fetch_array($resultat)) { echo $row['brukernavn']; } Det skriver ikke ut noe.. Sjønner ikke bæra.. Hvis jeg kjører spørringen i phpmyadmin får jeg følgende beskjed i tillegg til raden som inneholder brukernavnet som allerede er lagret: Showing rows 0 - 0 (1 total, Query took 0.0003 sec) Lenke til kommentar
Warz Skrevet 14. desember 2009 Del Skrevet 14. desember 2009 Da den ikke skriver ut noe skjer vel feilen her: $resultat = mysql_query($sql, $tilkobling) or die(mysql_error()); Jeg pleier å bruke sprintf jeg kan jo prøve det du og: $brukernavn = mysql_real_escape_string($_POST['brukernavn']); $sql = sprintf('SELECT `brukernavn` FROM `Montorer` WHERE `brukernavn` = %s',$brukernavn); $resultat = mysql_query($sql); $num_rows = mysql_num_rows($resultat); echo $num_rows; //Skriver ut "0"........ ikke at det skulle ha noe å si.. Lenke til kommentar
nilsh Skrevet 14. desember 2009 Forfatter Del Skrevet 14. desember 2009 (endret) Kom ikke noe vei med det, har ikke brukt den funksjonen før så kan hende jeg ikke bruker den helt riktig.. Skrev den akkurat slik du skrev.. sql'n som blir skrevet ut ser sånn ut: SELECT `brukernavn` FROM `Montorer` WHERE `brukernavn` = nwiggen "or die(mysql_error());" gjør at følgende blir skrevet ut: Unknown column 'nwiggen' in 'where clause' Dette blir ikke skrevet ut uten sprintf Sjønner ingenting... Det er jo en så standard spørring som det går an... Endret 14. desember 2009 av nilsh Lenke til kommentar
BlueEAGLE Skrevet 14. desember 2009 Del Skrevet 14. desember 2009 (endret) Strenger skal selvfølgelig stå i enkle anførselstegn i SQL. Altså ...WHERE `brukernavn` = 'nwiggen' ...og det er forskjell på 0 og false og derfor bruker du alltid === når du skal sjekke etter en nullverdi når funksjonen kan returnere false. Endret 14. desember 2009 av BlueEAGLE Lenke til kommentar
nilsh Skrevet 14. desember 2009 Forfatter Del Skrevet 14. desember 2009 Strenger skal selvfølgelig stå i enkle anførselstegn i SQL. Altså ...WHERE `brukernavn` = 'nwiggen' ...og det er forskjell på 0 og false og derfor bruker du alltid === når du skal sjekke etter en nullverdi når funksjonen kan returnere false. SELECT `brukernavn` FROM `Montorer` WHERE `navn` = 'nwiggen' Slik ser spørringen ut. Det er brukt anførselstegn. Takk for det siste tipset, men denne gangen er returverdien 0. Kan mysql_num_rows returnere false? Lenke til kommentar
nomore Skrevet 14. desember 2009 Del Skrevet 14. desember 2009 Ja, om den feiler. Lenke til kommentar
nilsh Skrevet 14. desember 2009 Forfatter Del Skrevet 14. desember 2009 Ja, om den feiler. Ok! greit å vite! Men skjønner fremdeles ikke hvorfor denne spørringen min ikke returnerer noen funn.. Lenke til kommentar
nilsh Skrevet 14. desember 2009 Forfatter Del Skrevet 14. desember 2009 Ja, om den feiler. Ok! greit å vite! Men skjønner fremdeles ikke hvorfor denne spørringen min ikke returnerer noen funn.. OK! Fant tilslutt ut at jeg på phpmyadmin dreiv å så på feil database! Har en jeg tester mot og en "ordentlig" en.. At d går an.. Ikke rart jeg fikk rare svar... Lenke til kommentar
BlueEAGLE Skrevet 15. desember 2009 Del Skrevet 15. desember 2009 (endret) Kan mysql_num_rows returnere false? Return Values The number of rows in a result set on success or FALSE on failure. Please read the manual! Endret 15. desember 2009 av BlueEAGLE Lenke til kommentar
nomore Skrevet 15. desember 2009 Del Skrevet 15. desember 2009 For å unngå slike feil så er det greit å samle slike ting i egne "config" filer som ikke endres selv om du kopierer filer mellom en test server til en annen. På den måten vil en "installasjon" alltid ha de innstillingene som er rett. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå