2017-11-26 1 views
0

코드에 문제가 있습니다. 입력 이름이 Name의 데이터베이스 정보와 동일한 지 확인합니다.MySQLi를 사용하여 PHP 입력과 데이터베이스를 비교하십시오.

그렇지 않은 경우 다른 결과를 인쇄하고이 정보를 데이터베이스에 추가하십시오.

제 문제는 else의 코드가 작동하지 않는다는 것입니다. if의 결과를 항상 출력합니다.

또한 데이터베이스의 모든 정보를 삽입하지 않으면 INSERT 코드를 복사하려고합니다.

내가 뭘 잘못하고있는거야?. 나는 PHP와 MySQL에 완전히 새로운 오전

<!DOCTYPE HTML> 
 
<html> 
 
<head> 
 

 
<?php 
 
// Load the configuration file containing your database credentials 
 
require_once('config.inc.php'); 
 

 
// Connect to the database 
 
$mysqli = new mysqli($database_host, $database_user, $database_pass, $database_name); 
 

 
// Check for errors before doing anything else 
 
if($mysqli -> connect_error) 
 
{ 
 
    die('Connect Error ('.$mysqli -> connect_errno.') '.$mysqli -> connect_error); 
 
} 
 

 
$name = $_GET["name"]; 
 
$email = $_GET["email"]; 
 

 
$mysqli->real_query("SELECT * FROM first_project WHERE Name = '$name'"); 
 

 
if ($mysqli->field_count > 0) 
 
{ 
 
echo "HAVE A GOOD DAY! $name"; 
 
echo "Your email is $email"; 
 
} 
 
else 
 
{ 
 
echo "Your were not part of the database, you and your data have been added $name"; 
 
$mysqli->query("INSERT INTO first_project VALUES ('$name', '$email')"); 
 
} 
 
$mysqli -> close(); 
 
?> 
 
</body> 
 
</html>

+4

코드가 SQL 삽입에 취약합니다. 대신 [prepared statements] (https://www.youtube.com/watch?v=nLinqtCfhKY)를 사용하는 법을 배우십시오. –

+0

우리는 또한 HTML 폼을 볼 필요가있다. (최소한 name = "name"을 가진 입력이 존재하는지 확인해야한다.) select 질의 전에'$ name'의 값을 확인할 수 있습니까? – WOUNDEDStevenJones

답변

0

먼저 기본 오류 검사를 수행하여 MySQL의 오류를 던졌다 경우

일 확인 오류 로그를 확인합니다.

2 first_project INTO))

3 시도의 INSERT를! (경우 두 변수 (존재하는지 확인 빈 (.. (이름, 이메일) 가치 (.., ..)는

4를 사용 제표를 작성 (SQL Injection)

당신이 지금하고있는 일은 이름이 있다면, 사용자가 게시 한 이름을 반향합니다. 실제로 아무것도 검색하지 않습니다. 데이터베이스 (결과가 있었는지 확인 만하고 목적이 맞는지 확실하지 않은 경우)

관련 문제