2016-03-22 12 views
0

ユーザのメールアドレスとパスワードが格納されたテーブルがあります。ユーザーが自分のアカウントに初めてログインしたときに、ページの読み込みにユーザーの電子メールを表示したい。しかし、それは動作していません。データはテキストフィールドに表示されません。私は自分のコードが理論上動くはずだと信じています。PHP - エコー変数問題

HTML

<section class="container"> 
     <form id="myform " class="Form" method="post" action="Cus_Account.php" accept-charset="utf-8"> 

      <!--     <div id="first">--> 
      <input type="text" id="fname" name="fname" value="" required> 
      <input type="text" id="lname" name="lname" value="" required> 
      <input type="text" id="email" name="email" value="<?php echo $email; ?>" required> 
      <input type="number" id="phone" name="phone" value="" required> 
      <input type="submit" name="Update" value="Update"> 
      <br> 
     </form> 

PHP

<?php 
     $user = $_SESSION['Cus_Email']; 

     $get_user = "SELECT Cus_Email FROM Cus_Register WHERE Cus_Email='$user'"; 

     $run_user = mysqli_query($dbc, $get_user); 
     //check if customer is on databse 
     $row_customer = mysqli_fetch_array($run_user); 


     $email = $row_customer['Cus_Email']; 

     ?> 

それは私がページ上で実行されている別のクエリを持っているあなたに伝えるために役立つことも

PHP

 <?php 
     if (isset($_POST['Update'])) { 
      echo $c_fname = $_POST['fname']; 
      echo $c_lname = $_POST['lname']; 
      echo $c_phone = $_POST['phone']; 



      $insert_det = "INSERT INTO Cus_acc_details(CUS_Fname,CUS_Lname, CUS_Phone) VALUES (?,?,?)"; 
      $stmt = mysqli_prepare($dbc, $insert_det); 

      mysqli_stmt_bind_param($stmt, 'ssi', $c_fname, $c_lname, $c_phone); 

      /* execute query */ 
      $r = mysqli_stmt_execute($stmt); 

      if ($insert_det) { 
       echo " Saved"; 
      } 
     } else { 
      echo "<b> Error </b>"; 
     } 
     ?> 

このクエリを挿入dデータベースへのサインアップページでは収集されていません。

エラー:

Undefined index: Cus_Email in /Applications/MAMP/htdocs/PhpProject2/customer/Cus_Account.php on line 60

+1

間違いはありますか?クエリは実行されますか?どこでもパラメータ化されたクエリを使用する必要があります。 'HTML'は' PHP'ページにありますか? – chris85

+0

**警告**:mysqliを使用する場合は、パラメータ化されたクエリと['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してユーザを追加する必要がありますデータを照会に追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成するため、これを達成するために文字列補間または連結を使用しないでください。 **決して**ユーザデータを '$ _SESSION'から直接クエリに入れないでください。 – tadman

+1

魔法の答えを期待しないでください。以下のリンクhttp://php.net/manual/en/mysqli.error.phpおよびhttp://php.net/manual/en/function.error-reporting.php を参考にしてコードに適用してください。 –

答えて

2

あなたがCus_Emailを作るためにログデータをコンソールにvar_dumpを使用することができます。

見つからない場合は、sqlが正しいかどうかを確認できます。

<?php 
    $user = $_SESSION['Cus_Email']; 

    $get_user = "SELECT Cus_Email FROM Cus_Register WHERE Cus_Email='$user'"; 

    $run_user = mysqli_query($dbc, $get_user); 
    //check if customer is on databse 
    $row_customer = mysqli_fetch_array($run_user); 
    // to test 
    var_dump($row_customer); 
    $email = $row_customer['Cus_Email']; 

?>