2016-06-14 77 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'數據沒有正確設置。試着'echo'你的'$ _POST'變量的值。 –

+0

請使用匹配標籤。這與CakePHP完全沒有關係。如果這是來自CakePHP應用程序的代碼,它完全不使用框架......我已經更正了標籤。 – burzum

+1

你應該看看這個http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index –

回答

0

這是由於您在if條件之前沒有初始化您的變量。如果POST數據沒有找到,那麼所有4個變量沒有設置,然後錯誤來了。 PLZ試試這個

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現在檢查。我修改了我的答案。如果有問題,那麼請讓我知道 –

0

我想你沒有得到任何發佈數據。就在執行

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

此職前添加,如果條件你POST['name']沒有設置沒有定義,並且它不走的,如果塊仍然沒有設置。