Gå til innhold

[Løst]Finne ut om et brukernavn er unikt, num_rows


Anbefalte innlegg

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 av nilsh
Lenke til kommentar
Videoannonse
Annonse
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

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

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 av nilsh
Lenke til kommentar

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 av BlueEAGLE
Lenke til kommentar
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
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

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å
×
×
  • Opprett ny...