我有这个代码(HTML表单)和另外一个文件(PHP逻辑),但点击提交按钮没有任何反应 - 也没有错误。请帮助解决错误。
<html>
<head>
<title> Registeration Form</title>
<link rel="stylesheet" type="text/css" href="design.css">
</head>
<body>
<div class = "title"><h1>Register form </h1></div>
<div class = "container">
<div class="left"></div>
<div class="right">
<div class="formBox">
<form action="" method="POST">
<input type="text" id="fname" name="firstname" placeholder="First Name"/>
<input type="text" id="lname" name="lastname" placeholder="Last Name"/>
<input type="text" id="email" name="email" placeholder="Email"/>
<input type="password" name="password1" placeholder="Password" />
<input type="password" name="password2" placeholder="Confirm Password" />
<input type="submit" name="submit">
</form>
</div>
</div>
</div>
<?php
if (isset($_POST["submit"]))
{
require'dbconnect.php';
$firstname = $_POST["firstname"];
$lastname = $_POST["lastname"];
$email = $_POST["email"];
$password = $_POST["password1"];
$confirmPass = $_POST["password2"];
$encryptedPassword = md5($password);
mysqli_query($link,"insert into users(FirstName, LastName, Email, Password)
values ($firstname, $lastname, $email,'$encryptedPassword')");
echo "<br>";
}
?>
</body>
</html>
这是PHP代码 - 连接到SQL ...我在Windows 10上使用WAMP64位,但我有类似的设置没有问题,但这段代码不起作用...我尝试了所有这些我可以。
<?php
//Hostname on which MYSQL is stored
$hostname = "localhost";
//MySQL server Username ... which is root
$username = "root";
// MySQL password which by default is empty
$password = "";
//Database name to which we connect...
$dbname = "signup";
// Connection to database;
$link = mysqli_connect ($hostname,$username,$password);
if (!$link){
die ("Could not connect: ".mysql_error());
}
mysqli_select_db($link, $dbname);
?>
答案 0 :(得分:1)
修改强>
请参阅mysqli_query
function on W3schools的文档。他们概述了实现脚本的正确方法。您的HTML代码没有任何问题;那部分没事。它纯粹与你的PHP有关。在你提供的这个实例中,PHP不会捕获任何错误;但是,您需要使用mysqli_error
函数来捕获错误。
另外需要注意的是,在您的代码中,您不能使用单引号'
封装您的值。这也可能导致MySQL错误,因为我认为它是语法的一部分(除了整数)。
请记住,编码Google是最好的朋友,而不是实际的PHP文档。
以下是我构建MySQLi的方法:
<?php
if (isset($_POST["submit"]))
{
require('dbconnect.php');
$firstname = $_POST["firstname"];
$lastname = $_POST["lastname"];
$email = $_POST["email"];
$password = $_POST["password1"];
$confirmPass = $_POST["password2"];
$encryptedPassword = md5($password);
$sql = "INSERT INTO users(FirstName, LastName, Email, Password)
VALUES ('$firstname', '$lastname', '$email', '$encryptedPassword')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
?>
和dbconnect.php
文件到以下内容:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "signup";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
我所做的是我用另一种方式设置了MySQLi。 INSERT
中的值已放入单引号中,并且还添加了一种方法,可以捕获MySQL产生的任何错误。
正如其他人所说; md5
不是保护密码的安全方式,而且您的脚本存在SQL Injection
希望这能指出你正确的方向!