2015-01-17 2 views
-1

등록 시스템을 만들고 있는데 입력 한 사용자 이름이 아직 존재하지 않거나 다른 사람이 아직 소유하고 있지 않은지 확인하는 쿼리를 원합니다. 그러나 지금까지 나는 실패했다. 나는 내 문제와 관련된 몇 가지 질문과 답을 보았지만, 대부분 이해할 수 없거나 대부분 해결되지 않았다. 나는 PHP에서 아마추어임을 명심하십시오.쿼리가 일부 값을 반환했는지 확인하는 방법은 무엇입니까?

$mysqli = mysqli_connect("localhost", "php24sql", "some password","smithside"); 
$query2 = "SELECT registered FROM contacts WHERE LRN = '$lrn'"; 
$query2 = mysqli_query($mysqli, $query2) or die(mysqli_error($mysqli)); 
$row = mysqli_fetch_assoc($query2); 
$registered = $row['registered']; 
if ($registered == 0) { 
$query = "UPDATE contacts SET first_name = '$fname', last_name = '$lname', position = 'none', email = '$email', phone = '$contact', user_name = '$uname', password = '$pass1', access = 'Registered', registered = 1 WHERE LRN = '$lrn'"; 
$query = mysqli_query($mysqli, $query); 
echo "Registration successful!"; 

$query4 = "SELECT user_name FROM contacts WHERE user_name = '$uname'"; 
$query4 = mysqli_query($mysqli, $query4); 
$row4 = mysqli_fetch_assoc($query4); 
} elseif (mysql_num_rows($query4) > 0) { 
echo "Registration failed. Username already taken."; 
} else { 
echo "Registration failed. LRN already taken."; 
} 

미리 감사드립니다.

+0

num_rows 살펴보기 http://php.net/manual/en/mysqli-result.num-rows.php – Mihai

+0

'} elseif (mysql_num_rows ($ query4)> 0) {'이 줄에 오타가 있음을 의미합니다. mysql에서'i'가 누락되었습니다.'elseif (mysqli_num_rows ($ query4)> 0) {' –

답변

0
$num_rows = mysqli_num_rows($query); 
if($num_rows == 0) 
{ 
//user name doesn't exist 
} 
else 
{ 
//user name exists 
} 

당신은 mysqli_num_rows 기능을 찾고 - http://php.net/manual/en/mysqli-result.num-rows.php


또한 당신이 DB를 "UNIQUE"에 필드를 만들 수 있습니다 모든 시간을, 이미 존재하는 값을 제출할 때, MySQL이됩니다 반환 오류.


PS 코드에서 치명적인 SQL 주입 보안 버그가 있습니다. DB에 값을 보내기 전에 특수 문자에서 "정리"해야합니다 - http://php.net/manual/en/mysqli.real-escape-string.php이 기능을 사용하여 구현할 수 있습니다!

관련 문제