首页 > 解决方案 > sql中没有插入数据

问题描述

sql中没有插入数据

当密码不相等时,密码不相等正在工作。但是,当密码匹配时,我的 sql 中不会更新任何数据。已经尝试直接从数据库导入数据到sql,也确认连接数据库已经完成。

<?php

       $host= 'localhost';
       $user= 'root';
       $pass= '';
       $db= 'newusers';

       $name = $_POST['name'];
       $surname = $_POST['surname'];
       $email = $_POST['email'];
       $password = $_POST['password'];


       $con=mysqli_connect($host,$user,$pass,$db);
        if($con)
                /*echo 'Connected Successfully to newusers database';*/

        //if ($_SERVER['REQUEST_METHOD'] == 'POST') {

            //check passwords are equal

            if($_POST['password'] != $_POST['confirmpassword']){
                echo 'Passwords are not equal';
            }
            if ($_POST['password'] == $_POST['confirmpassword']){
                $sql = "INSERT INTO signup (Name, Surname, Email, Password) values ('$name', '$surname', '$email', '$password')";
        }

?>

预期的结果是,如果密码相同,数据将上传到 mysql

标签: phphtml

解决方案


您的代码有几个问题。首先,您没有在正确的位置使用大括号来确保您的比较符合上下文。您应该在连接检查周围有花括号:

if($con) {
   // your code here
}

解决这个问题,然后您需要执行您的查询。一种方法是使用mysqli_query()

$host= 'localhost';
$user= 'root';
$pass= '';
$db= 'newusers';

$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$password = $_POST['password'];

$con=mysqli_connect($host,$user,$pass,$db);
if($con) { // added opening bracket here

    /*echo 'Connected Successfully to newusers database';*/

    //if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        //check passwords are equal
    //} added closing bracket here 

    if($_POST['password'] != $_POST['confirmpassword']){
        echo 'Passwords are not equal';
    } else { // you don't need another 'if' statement
        $sql = "INSERT INTO signup (Name, Surname, Email, Password) values ('$name', '$surname', '$email', '$password')";
        $result = mysqli_query($con, $sql); // execute the query
    }
}

警告!

Little Bobby您的脚本面临 SQL 注入攻击的风险。了解MySQLi的预处理语句。即使转义字符串也不安全!

永远不要存储纯文本密码!请使用PHP 的内置函数来处理密码安全问题。如果您使用的 PHP 版本低于 5.5,则可以使用password_hash() 兼容性包在散列之前没有必要对密码进行转义或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。

经常检查错误!

<?php在您的开始标签之后添加错误报告到您的文件顶部error_reporting(E_ALL); ini_set('display_errors', 1); 添加错误检查,例如or die(mysqli_error($con))您的查询。或者,您可以在当前的错误日志中找到问题。


推荐阅读