2016-06-14 27 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

投稿データはありません。ポストが定義されていないなどの条件ならば実行直前

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

を追加するには、POST['name']が設定されておらず、それがあればブロックを行っていないと設定されていないまま。