Problem z kodem formularza rejestracyjnego

0

Witam,
Problem polega na tym że skrypt łączy się z bazą ale konta z tym samym loginem można cały czas tworzyć.

Oto błąd jaki wyskakuje:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in D:\Baza\www\rejestracja.php on line 32

A to kod:

<?php
	$servername = "localhost";
	$user = "root";
	$pass = "";
	$dbname = 'db101';
	$link = mysqli_connect($servername, $user, $pass, $dbname);
	
	if($link)
	{
		echo "Nawiązano połączenie z bazą danych";
	}
	else {
		echo "Nie można nawiązać połączenia z bazą danych";
	}
	
	function filtruj($zmienna)
	{
		if(get_magic_quotes_gpc())
			$zmienna = stripslashes($zmienna); 
		
		return mysqli_real_escape_string(htmlspecialchars(trim($zmienna)));
	}
	
	if (isset($_POST['rejestruj']))
	{
		$login = ($_POST['login']);
		$haslo1 = ($_POST['haslo1']);
		$haslo2 = ($_POST['haslo2']);
		$email = ($_POST['email']);
		$ip = ($_SERVER['REMOTE_ADDR']);
		
			if (mysqli_num_rows(mysqli_query($link, "SELECT login FROM uzytkownicy WHERE login = ".$login."")) == 0)
			{
				
				if ($haslo1 == $haslo2) 
				{
					
					mysqli_query($link, "INSERT INTO `uzytkownicy` (`login`, `haslo`, `email`, `rejestracja`, `logowanie`, `ip`) VALUES ('".$login."', '".$haslo1."', '".$email."', '".time()."', '".time()."', '".$ip."')");
					
						
					echo "Konto zostało utworzone!";
						
				}
				else echo "Hasła nie są takie same";
						
			}
			else echo "Podany login jest już zajęty.";
	}

?>


4

Powinieneś mieć unique na kolumnie w bazie właśnie na wypadek błędu w kodzie.
Czy to zapytanie wykonane samo coś zwraca?

mysqli_query($link, "SELECT login FROM uzytkownicy WHERE login = ".$login."")

Bo na końcu dodajesz pusty stringi a chyba powinieś użyć ' "ciapka dla wartości w where.

mysqli_query($link, "SELECT login FROM uzytkownicy WHERE login = '".$login."'")
0

Dzięki brakowało tylko ' i wszystko działa :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1