用PHP的html表单没有连接并且也没有显示任何错误

时间:2018-05-02 01:07:16

标签: php mysql html-form

我有这个代码(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);


?>

1 个答案:

答案 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

的风险

希望这能指出你正确的方向!