2016-06-14 6 views
0

정의되지 않은 변수 (이름, 이메일은, ADM은 추가) 친절하게 여기 내 코드정의되지 않은 변수 (오류)

입니다 오류 를 제거하는 데 도움이 ..... 라인 (16) .... 오류가오고에
<?php 

$con = mysqli_connect('localhost','root',''); 
if(!$con) { 
    echo 'not connected to database'; 
} 
if(!mysqli_select_db($con,'student')) { 
    echo 'database not selected'; 
} 
if (isset($_POST['name'])){$name = $_POST['name'];} 
if (isset($_POST['email'])){$email= $_POST['email'];} 
if (isset($_POST['address'])){$add = $_POST['address'];} 
if (isset($_POST['admission'])){$adm = $_POST['admission'];} 

/*line:16*/                   
$sql = "INSERT INTO student_record (name,email,address,joining_date) VALUES('$name','$email','$add','$adm')"; 
if (!mysqli_query($con,$sql)) { 
    echo 'not inserted'; 
} else { 
    echo'inserted'; 
} 

?> 
+1

글쎄,'if' 문을 보면'$ _POST' 데이터가 올바르게 설정되지 않은 것 같습니다. '$ _POST' 변수의 값을'echo'해보십시오. –

+0

일치하는 태그를 사용하십시오. 이것은 CakePHP와 전혀 관련이 없습니다. 이것이 CakePHP 어플리케이션의 코드라면 프레임 워크를 전혀 사용하지 않고 있습니다. 이미 태그를 수정했습니다. – burzum

+1

http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index –

답변

0

이것은 if 조건 전에 변수를 초기화하지 않았기 때문입니다. POST 데이터가 없으면 4 개의 변수가 모두 설정되지 않은 경우 오류가 발생합니다. 이 시도해보기

if($_POST){ 
    $con = mysqli_connect('localhost','root',''); 
    if(!$con) 
    { 
     echo 'not connected to database'; 
    } 
    if(!mysqli_select_db($con,'student')) 
    { 
     echo 'database not selected'; 
    } 

    $error = true; 
    $errorMessage = ''; 
    if (empty($_POST['name']) || empty($_POST['email']) || empty($_POST['address']) || empty($_POST['admission'])){ 
     $error = false; 
     if(empty($_POST['name'])){ 
      $errorMessage = 'Please enter name <br/>'; 
     } 
     if(empty($_POST['email'])){ 
      $errorMessage .= 'Please enter email <br/>'; 
     } 
     if(empty($_POST['address'])){ 
      $errorMessage .= 'Please enter address <br/>'; 
     } 
     if(empty($_POST['admission'])){ 
      $errorMessage .= 'Please enter admission <br/>'; 
     } 
    } 
    if($error){ 
     $name = mysql_real_escape_string($_POST['name']); 
     $email = mysql_real_escape_string($_POST['email']); 
     $add = mysql_real_escape_string($_POST['address']); 
     $adm = mysql_real_escape_string($_POST['admission']); 

     /*line:16*/                   
     $sql = "INSERT INTO student_record (name,email,address,joining_date) VALUES('$name','$email','$add','$adm')"; 
     if (!mysqli_query($con,$sql)) 
     { 
      echo 'not inserted'; 
     }else{ 
      echo'inserted'; 
     } 
    }else{ 
     echo $errorMessage; 
    } 
} 
+1

질문에 답하지 않고 SQL 쿼리가 완전히 안전하지 않으며 SQL 주입 공격에 취약하다는 사실을 지적하는 것이 중요합니다. 해커가 견적을 포함하는 양식에 데이터를 게시하면 기본적으로 SQL을 다시 작성할 수 있습니다. 이런 종류의 문제를 피하기 위해서는 적절한 이스케이프 또는 준비된 쿼리를 사용해야합니다 **. – Simba

+0

고마워요 ......... 내 오류를 제거했지만 인쇄가 "삽입되지 않았습니다" –

+0

@FarhanaMaryam plz 지금 확인하십시오. 나는 내 대답을 수정했다. 그때 나에게 문제가 있다면 plz 알려주세요 –

0

나는 어떤 게시물 데이터도 얻지 못하고 있다고 생각합니다. 그냥 POST['name']가 설정되지 않은 사용자 정의되지 않은 이후로 실행

if($_POST){ /*Do stuff check for the post['name'] run your SQL query */ 

전에 경우 조건을 추가하고이 경우 블록을 이동하지 않고 설정되지 않은 상태로 유지됩니다.