使用php保存html表单时,获取错误未定义变量和所有值在sql db中保存为0

使用php保存html表单时,获取错误未定义变量和所有值在sql db中保存为0,php,html,mysql,phpmyadmin,xampp,Php,Html,Mysql,Phpmyadmin,Xampp,Html代码: <html> <head> </head> <body> <p><h1>Student Information Input Form</h1></p> <section> <form method="POST" action="connection.php"> <p><b>Name:</b>&nbsp;<inpu

Html代码:

<html>
<head>
</head>
<body>
<p><h1>Student Information Input Form</h1></p>
<section>
<form method="POST" action="connection.php">
<p><b>Name:</b>&nbsp;<input type="text" id="name" name="name"></input></p>
<p><b>Username:</b>&nbsp;<input type="text" id="username" name="username"></input></p>
<p><b>Password:</b>&nbsp;<input type="password" id="password" name="password"></input></p>
<p><b>Email:</b>&nbsp;<input type="email" id="email" name="email"></input></p>
<p><input type="submit" id="submit" name="submit"></p>
</form>
</section>
</body>
</html>

学生资料输入表格

姓名:

用户名:

密码:

电邮:

PHP代码:

<?php
$servername="localhost";
$username="root";
$password="";
$dbname="newdb";

//Create Connection
$conn=new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

//get values from form
if (isset($_POST['name'])) {
$nameForm=$_POST['name'];
}
if (isset($_POST['username'])) {
$usernameForm=$_POST['username'];
}
if (isset($_POST['passsword'])) {
$passwordForm=$_POST['password'];
}
if (isset($_POST['email'])) {
$emailForm=$_POST['email'];
}

//Insert Values
$sql = "INSERT INTO userinfo (name, username, password, email) VALUES ('$nameForm', '$usernameForm', '$passwordForm', '$emailForm')";

//To check whether data is inserted properly or not
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>
这是一个输入错误
if(isset($\u POST['passsword']){//password

注意: 也可以考虑切换到PDO语句

< P>它是一个键入<代码>(ISSET($xPOST [ PasrBoe])){//密码< /COD> < /P> 注意
也可以考虑切换到PDO语句

您的代码是脆弱的!您应该(至少)如果不使用,请转义您的输入!当然名称、用户名、密码和电子邮件列不是数字或具有默认值“0”,对吗?否则在插入行时它们将不会为零。另一方面,您不应以纯文本形式存储密码!继续阅读,并在可用时使用这些函数!@Byteaway您能不能请sugg请详细说明我如何避免sql注入以及如何使用哈希作为密码,因为我是新手。@Sloarthrasher当我更改为varchar时,db行被设置为int,它起作用了。您的代码易受攻击!您应该(至少)如果不使用,请转义您的输入!当然名称、用户名、密码和电子邮件列不是数字或具有默认值“0”,对吗?否则在插入行时它们将不会为零。另一方面,您不应以纯文本形式存储密码!继续阅读,并在可用时使用这些函数!@Byteaway您能不能请sugg请详细说明我如何避免sql注入以及如何使用哈希作为密码,因为我对这一点不熟悉。@Sloarthrasher当我更改为varchar时,db行被设置为int,它起作用了。@alapan是否解决了它?这并不能解释为什么所有值都存储为0,尽管它确实回答了问题的一部分。询问者应该回答o验证其数据库行未设置为“整数”@JigarShah感谢find,它做到了这一点。@sicksixtings我将数据库行保持为整数,当我更改为Varchar时,它现在工作正常。@alapan是否已将其解决?这并不能解释为什么所有值都存储为0,尽管它确实回答了问题的一部分。询问者还应验证其数据库行是否正确未设置为“整数”@JigarShah感谢您的发现,它做到了这一点。@sicksixtings我将数据库行保留为整数,当我更改为Varchar时,它现在工作正常。