2017-01-12 3 views
-1

그래서 포럼에서 찾아 봤는데,하지만 나를 도와 아무것도 찾을 수 없습니다! 전체 코드는 다음과 같습니다. $ result = $ conn-> query ($ query);에서 오류가 발생합니다. 나는 PHP에 익숙하지 않으므로 나로 쉽게 넘어갈 수있다. 치명적인 오류 : 멤버 함수 쿼리에()를 호출 오류

<?php 
include 'Register.html'; 
if(isset($_POST['Submit'])) 
{ 
    SignUp(); 
} 
global $conn; 
$servername = "localhost"; 
$username1 = "root"; 
$password1 = ""; 
$dbname = "fiesta_db"; 

// Create connection 
$conn = new mysqli($servername, $username1, $password1, $dbname); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
    return $conn; 
} 

function NewUser() 
{ 
    $username = $_POST['username']; 
    $email = $_POST['email']; 
    $password = $_POST['password']; 


    $register = "INSERT INTO website (username, email, password) 
    VALUES ($username, $email, $password)"; 

    if ($conn->query($register) == TRUE) { 
    echo "Successfully registered."; 
    } 
    else { 
    echo "Wrong syntax"; 
    } 
} 
function SignUp() 
{ 
    if(!empty($_POST['username'])) 
    { 
    global $conn; 
    $query = "SELECT * FROM website WHERE username ='$_POST[username]' AND email ='$_POST[email]'; "; 
    $result = $conn->query($query); 


    if ($result->num_rows != 0) 
    { 
     NewUser(); 
    } 
    else { 
     echo "Username or Email already exist!"; 
    } 
    } 
    $conn->close(); 
} 
?> 

너희들이

<!DOCTYPE HTML> 
<html> 
<head> 
<title>Sign-Up</title> 
</head> 
<body id="body-color"> 
<div id="Sign-Up"> 
<form action='register_do.php' method='post' 
    accept-charset='UTF-8'> 
<fieldset > 
<legend>Register</legend> 
<input type='hidden' name='submitted' id='submitted' value='1'/> 
<label for='username' >Username:</label> 
<input type='text' name='username' id='username' maxlength="50" /> 
<label for='email' >Email Address:</label> 
<input type='text' name='email' id='email' maxlength="50" /> 
<label for='password' >Password:</label> 
<input type='password' name='password' id='password' maxlength="50" /> 
<input type='submit' name='Submit' value='Submit' /> 

</fieldset> 
</form> 
</div> 
</body> 
</html> 

다음은 등록 페이지입니다 (완전 다만 세부 사항을 더 추가하려고하지 않음) 도움이 될 수 있습니다 희망, 나는 이것이 전부입니다 보여 더 이상 코드가 없습니다. 범프

+1

정확한 * 라인이 일어날 무엇 * 무엇 * 정확한 * 오류이고에? 오류가'$ conn'이 초기화되지 않았다는 것을 알려주는 것이라면, 어디에서 초기화합니까? 이 코드에서는 아무 것도 없습니다. (그것은 주목할 가치가 당신이 * 할 때 *이 당신이 눈부신 SQL 주입 취약점을 할거야 작동하도록.) – David

+0

를이 프레드-II @ 전체 코드도 PHP로 I'am 새로운 ... – Musti

+0

아니다 - 분명히 질문은 불완전합니다. 그러나 그가 제공하는 약간의 에러 메시지조차도 문제는'$ conn'의 값과 함께 있다는 것을 분명히합니다. 특정 메소드 이름을 보지 않고 "메소드 호출"오류를 반사적으로 주목하고 99 %의 시간을 보는 것과 같은 문제라고 가정했습니다. – Barmar

답변

0

주 코드에서 $conn에 할당하기 전에 SignUp()으로 전화 할 것입니다. 해당 코드를 아래로 이동하십시오.

$servername = "localhost"; 
$username1 = "root"; 
$password1 = ""; 
$dbname = "fiesta_db"; 

// Create connection 
$conn = new mysqli($servername, $username1, $password1, $dbname); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
    return $conn; 
} 

if(isset($_POST['Submit'])) 
{ 
    SignUp(); 
} 

는 또한 주요 코드에서 global $conn; 문을 필요가 없습니다. 함수 외부에 할당 된 변수는 자동으로 전역 변수이므로 전역 변수에 액세스 할 수 있도록 함수 내에 구문 만 있으면됩니다.

는 또한 NewUser()에서 쿼리에 따옴표를 놓치고 :

$register = "INSERT INTO website (username, email, password) 
    VALUES ('$username', '$email', '$password')"; 

그리고 SignUp()에서

, 당신은 잘못된 조건을 사용하고 있습니다. 사용자 이름을 사용할 수있는 경우 SELECT 쿼리는 0 행을 반환합니다, 그래서해야한다 :

if ($result->num_rows == 0) { 
    NewUser(); 
} else { 
    echo "Username or Email already exist!"; 
} 
+0

고마워요.하지만 지금은 사용자가 이미 존재한다고해도 계속 말해주고 있습니다. – Musti

+0

쿼리를 반향하고 수동으로 실행하여 결과가 무엇인지 확인하십시오. – Barmar

+0

어떻게하면됩니까? – Musti

관련 문제