POST变量没有取值

时间:2014-12-25 13:22:26

标签: php mysqli

运行register.php文件时遇到问题。我的PHP代码没有从html变量中获取值。

运行代码会产生未定义的索引错误

我使用过MySQLi和WAMP服务器。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title></title>
</head>

<body>
<form action="register.php" method="post">
<table width="200" border="1" align="center">
  <tr>
    <td width="95">User Name </td>
    <td width="89"><label>
      <input name="uname" type="text" id="uname" />
    </label></td>
  </tr>
  <tr>
    <td>User Password </td>
    <td><label>
      <input name="upass" type="text" id="upass" />
    </label></td>
  </tr>
  <tr>
    <td>User Email </td>
    <td><label>
      <input name="uemail" type="text" id="uemail" />
    </label></td>
  </tr>
      <tr>
    <td colspan="2"><label>
    <div align="center">
      <input type="submit" name="Submit" value="Sign Up !!" />
        </div>
    </label></td>
    </tr>
</table>
</form>
</body>
</html>
<?php
$con=mysqli_connect('localhost','root','','firstdatabase');
if($con->connect_error)
{
die('error:'.$con->connect_errno.')'.$con->connect_error);
}
$u_name=$_POST['uname'];
$u_pass=$_POST['upass'];
$u_email=$_POST['uemail'];

$insert_row=$con->query("INSERT INTO user_index(user_name, user_pass, user_email) VALUES ($u_name, $u_pass, $u_email)");
if($insert_row)
{
print 'Success';
}
else
{
die('error:'.$con->errno.')'.$con->error);
}

?>

4 个答案:

答案 0 :(得分:0)

您应该更改查询

$insert_row=$con->query("INSERT INTO user_index(user_name, user_pass, user_email) VALUES ('$u_name', '$u_pass', '$u_email')");

但是你的代码还有另一个问题。请拍摄并了解SQL Injection

的内容

答案 1 :(得分:0)

将代码的php部分放在register.php。

变量需要从HTML发布到PHP,以便PHP可以在URL变量中接受它。如果你把它放在与HTML相同的文件中,它不会事先知道发生了什么。

如果您已将当前文件命名为register.php。然后在表单中更改文件的名称,并将您的PHP代码放在那里。

答案 2 :(得分:0)

将代码包含在isset()函数中以提交输入。因为这些是在设置之前检查。在提交表单之前不会设置它们并且将提供未定义的索引

<?php
$con=mysqli_connect('localhost','root','','firstdatabase');
if($con->connect_error)
{
die('error:'.$con->connect_errno.')'.$con->connect_error);
}
if(isset($_POST['Submit'])){
$u_name=$_POST['uname'];
$u_pass=$_POST['upass'];
$u_email=$_POST['uemail'];

$insert_row=$con->query("INSERT INTO user_index(user_name, user_pass, user_email) VALUES ($u_name, $u_pass, $u_email)");
if($insert_row)
{
print 'Success';
}
else
{
die('error:'.$con->errno.')'.$con->error);
}
}
?>

答案 3 :(得分:0)

在这里,我建议3-4点重新检查并格式化您的表格,这将解决您的问题。

  • 将PHP代码保留在页面标记之前,以便更快地执行和逻辑检测
  • 使用

    检查您的表单提交事件
        if(isset($_POST['Submit'])) {
             $u_name=isset($_POST['uname'])?mysqli_real_escape_string($con,$_POST['uname']):"";
             $u_pass=isset($_POST['upass'])?mysqli_real_escape_string($con,$_POST['upass']):"";
             $u_email=isset($_POST['uemail'])?mysqli_real_escape_string($con,$_POST['uemail']):"";
    
             $sql = "INSERT INTO user_index(user_name, user_pass, user_email) 
                     VALUES ('".$u_name."', '".$u_pass."', '".$u_email."')";
             $insert_row=$con->query($sql);
             if($insert_row)
             {
                 print 'Success';
             }
             else
             {
                 die('error:'.$con->errno.')'.$con->error);
             }
        } 
    
  • 尝试使用

    调试已发布的变量

    的print_r($ _ POST); 出口(0);

  • 我认为在表单操作中,您需要提供哪些表单将在同一页面上提交。 (可选)

因此,通过考虑以上三点,您将能够获得所需的结果。