내 웹 사이트에 계정을 등록하는 동안 전자 메일이 데이터베이스에 이미 있는지, PHP를 사용하여 MySQLi 데이터베이스와 상호 작용하는지 . 나는 내가 여기에서 발견 할 수 있었던만큼 많은 가이드를 사용하려고 노력했다. 그러나 아직도 운이 없다.PHP를 사용하여 MySQLi 데이터베이스에 전자 메일이 있는지 확인
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$database = new mysqli("localhost", "user", "dbpw", "dbname");
if($database->connect_error){
die("Error connecting:" . $database->connect_error);
}
$email = $database->real_escape_string(htmlspecialchars($_POST["email"]));
$query = "SELECT email FROM Users WHERE email =$email";
$result = $database->query($query);
$numOfRows = $database->num_rows($result);
if($numOfRows > 0){
echo "Email already exists in our database.";
}else{
$query = "INSERT INTO Users (email) VALUES ('" . $email . "');
if(!$database->query($query)){echo("<p>Unable to add user for query: " . $query . " <br /> Error: " . $database->errno . " " . $database->error);}}
전에 이메일 확인합니다 (경우 ($ numOfRows) 문)을 삽입하기, 내 데이터베이스가 존재했다 : 아래
내가 원래 등록에 내 데이터베이스에 사용자의 이메일을 삽입 쓴 코드 제대로 업데이트되었습니다.그러나 시도한 이메일 확인을 추가하면 페이지가 완전히 파기됩니다. 내 데이터베이스는 고유 한 암호로 업데이트되지 않으며 전자 메일이 중복 된 경우 "전자 메일이 이미 데이터베이스에 있습니다"라는 메시지가 표시되지 않습니다. 페이지가로드되지만 기본 머리글, 바닥 글 및 배경 CSS 만 있으면 모든 페이지에 링크됩니다. 대신
$numOfRows = $database->num_rows($result);
사용
if($result ->num_rows)
{
}
선택 쿼리에 오류가 있습니다 : '$ query = "사용자가 보낸 이메일 선택 이메일 = $ 이메일";은'$ query = "이어야합니다 사용자가 보낸 이메일 선택 이메일 ='$ 이메일 '"; 전자 메일 값은 작은 따옴표로 묶어야합니다. 그것은 문자열입니다. 삽입물에 올바른 방법으로 그렇게하십시오 –
** 경고 : ** * mysql injection *에 열려 있습니다! 'prepared statements'을 사용하여 자신을 보호하십시오. – Nytrix
@Nytrix Roger, 조언 해 주셔서 감사합니다. 준비된 문을 사용하기 위해이 파일을 변경하여 내 주요 문제를 해결했습니다. – sono2