从 Html Forms 在 sql 表中记录信息的问题

Posted

技术标签:

【中文标题】从 Html Forms 在 sql 表中记录信息的问题【英文标题】:Trouble with recording information in sql tables from Html Forms 【发布时间】:2017-10-05 19:31:14 【问题描述】:

我创建了一个非常基本的 html 注册页面,需要用户输入他们的名字、姓氏、电子邮件和密码。然而,只有名字和姓氏被记录在 phpmyadmin 的数据库中,并且电子邮件和密码显示为空白 cloumns。我试图再次删除和添加表和列,但没有任何运气,我更改了变量名,也没有运气。不太确定该怎么做。

php代码

<?php

$servername = "localhost";
$username = "";
$password = "";
$dbname = "";

//Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) 
    die("Connection failed: " . $conn->connect_error);
 
//echo "Connected successfully";

$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$password_ = $_POST['password_'];

if (isset($_POST['register'])) 
    register($first_name,$last_name,$_email,$password,$conn);



$conn->close();


function register($first_name,$last_name,$email,$password,$conn) 
//    echo $first_name . " " . $last_name . " " . $student_id . " " . $email;

$sql = "INSERT INTO `register` (`first_name`, `last_name`, `email`, `password_`) VALUES ('$first_name', '$last_name', '$email', '$password_')";
if ($conn->query($sql) === TRUE) 
    echo "New record created successfully";
 else 
    echo "Error: " . $sql . "<br>" . $conn->error;



?>

html代码

<!DOCTYPE html>

<html lang="en">


<head>
  
<title>Bootstrap Case</title>
  
<meta charset="utf-8">
  
<meta name="viewport" content="width=device-width, initial-scale=1">
  
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>

</head>


<body>


<form role="form" action="register.php" method="POST">
  

<div class="form-group">
   
<label>First Name:</label>
   
<input type="text" class="form-control" id="first_name" name="first_name"required>

</div>
<div class="form-group">
   
<label>Last Name:</label>
   
<input type="text" class="form-control" id="last_name" name="last_name"required>

</div>
<div class="form-group">



<label>Email address:</label>
   
<input type="varchar" class="form-control" name="e_mail" id="email"required>


</div>
<div class="form-group">
    
<label>Password:</label>
   
<input type="password" class="form-control" id="password" name="password"required>

</div>
<div class="form-group">

<label>Confirm Password:</label>
   
<input type="password" class="form-control" id="confirm_password"required >



<script>
var password = document.getElementById("password")
  , confirm_password = document.getElementById("confirm_password");

function validatePassword()
  if(password.value != confirm_password.value) 
    confirm_password.setCustomValidity("Passwords Don't Match");
   else 
    confirm_password.setCustomValidity('');
  


password.onchange = validatePassword;
confirm_password.onkeyup = validatePassword;

</script>


</div>

<button type="submit" class="btn btn-default" name="register">Register</button>

</form>




</body>

</html>

【问题讨论】:

您应该在“必需”之前有一个空格。另外,请使用准备好的语句。您的代码受到 SQL 注入的影响。 您是否收到任何错误消息?是否开启了 PHP 错误? 在您获取密码值的行中,它拼写错误。密码_而不是密码。 好,我换个试试! 不走运,它还是空的。 【参考方案1】:

为了获取 _POST 变量,您的输入表单必须具有 name 属性。对于您的电子邮件表单,您只指定了一个 ID,没有指定名称。返回并添加 name='email' 属性,它应该可以工作。密码也一样。

【讨论】:

我试过了,还是不行。不过谢谢!【参考方案2】:

看起来我在声明函数的 php 注册代码中缺少下划线。我已经添加了它,现在我的代码似乎可以工作了,感谢所有反馈!

【讨论】:

以上是关于从 Html Forms 在 sql 表中记录信息的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何从 T-SQL 表中提取最新值

SQL Query 从不同的表中选择相同的数据,显示所有记录,但显示/显示匹配

如何从 SQL Server CE 表中删除一行?

SQL 表中记录的唯一组合(从节点表中获取边)

SQL Server - 从其他表中排除记录

SQL删除一个表不存在与另外一个表中的记录