2016-03-22 130 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 ata,因为尚未在注册页面上收集到数据库中。

错误:

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

可以使用var_dump到控制台日志中的数据,使Cus_Email

如果你找不到它,你可以检查你的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']; 

?>