Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的SQL插入不起作用_Php - Fatal编程技术网

php中的SQL插入不起作用

php中的SQL插入不起作用,php,Php,我对php非常陌生,正在尝试注册并开始工作,我的代码只是将用户名加载到数据库中,没有其他内容。虽然如果我将值硬编码到sql insert中,并且不使用sql insert,它会将值输入到数据库的其他字段中 $users_Password 等等。顺便说一句,我知道这是一个糟糕的代码,密码应该被散列等等,但我真的把这个代码撕碎了,因为这不起作用,在整理完之后,我会把所有的东西都加回去。干杯,这是我的代码 形式 用户名: 密码: 确认密码: 名字: 姓氏: 地址行1: 地址行2: 城市: 电话:

我对php非常陌生,正在尝试注册并开始工作,我的代码只是将用户名加载到数据库中,没有其他内容。虽然如果我将值硬编码到sql insert中,并且不使用sql insert,它会将值输入到数据库的其他字段中

$users_Password
等等。顺便说一句,我知道这是一个糟糕的代码,密码应该被散列等等,但我真的把这个代码撕碎了,因为这不起作用,在整理完之后,我会把所有的东西都加回去。干杯,这是我的代码

形式


用户名:
密码:
确认密码:
名字:
姓氏:
地址行1:
地址行2:
城市:
电话:
手机:

然后在Register.php文件中

<?php
                // create connection
                $con=mysqli_connect("localhost","root","","book");  
                // check connection
                if(mysqli_connect_errno($con)){
                    echo "Failed to connect to MySQL: " . mysqli_connect_error();
                }

                $users_Username = $_POST['Username'];
                $users_Password = $_POST['Password'];
                $users_ConfirmPassword = $_POST['ConfirmPassword'];
                $users_FirstName = $_POST['FirstName'];
                $users_Surname = $_POST['Surname'];
                $users_AddressLine1 = $_POST['AddressLine1'];
                $users_AddressLine2 = $_POST['AddressLine2'];
                $users_City = $_POST['City'];
                $users_Telephone = $_POST['Telephone'];
                $users_Mobile = $_POST['Mobile'];
                //Multiple Error checkings such as 
                if ($users_Username == "")
                {
                    echo "Please enter a username";
                    echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Register_Form.php';\",1500);</script>";
                }
                else if ($users_Password = "")
                {
                    echo "Please enter a password";
                    echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Register_Form.php';\",1500);</script>";
                }
                else if ($users_ConfirmPassword == $users_Password)
                {
                    if (strlen($users_Password)<=6)
                    {
                        $sql = "INSERT INTO users VALUES ('$users_Username', '$users_Password', '$users_FirstName', '$users_Surname','$users_AddressLine1','$users_AddressLine2','$users_City','$users_Telephone','$users_Mobile')";

                        if($con->query($sql) === TRUE)
                        {
                            echo "User succesfully registered";
                            echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Log_In_Screen.php';\",1500);</script>";


                        }
                        else
                        {
                            echo "Unable to register user, Please try again";
                            echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Register_Form.php';\",1500);</script>";
                        }

                        //echo "<pre>\n$sql\n</pre>\n";
                        mysql_query($sql);
                    }
                    else
                    {
                        echo "The password you entered is too long, max characters is 6";
                        echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Register_Form.php';\",1500);</script>";
                    }
                }
                else
                {
                    echo "Passwords do not match, Please try again";
                    echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Register_Form.php';\",1500);</script>";
                }

                mysqli_close($con);

        ?>

数据库中有哪些内容

在适当的行中尝试以下操作:

<?php
    $users_Username = $_POST['Username'];
    $users_Password = $_POST['Password'];
    $users_ConfirmPassword = $_POST['ConfirmPassword'];
    $users_FirstName = $_POST['FirstName'];
    $users_Surname = $_POST['Surname'];
    $users_AddressLine1 = $_POST['AddressLine1'];
    $users_AddressLine2 = $_POST['AddressLine2'];
    $users_City = $_POST['City'];
    $users_Telephone = $_POST['Telephone'];
    $users_Mobile = $_POST['Mobile'];

    //LETS JUST DO ERROR CHECKING ONLY
    $valid = true; //Used to verify that user input is as expected.
    //All the validation as before just as ifs and will set the 
    //$valid flag to false when validation fails.
    if ($users_Username == "")
    {
        $valid = false;
        echo "Please enter a username";
        echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Register_Form.php';\",1500);</script>";
    }
    if ($users_Password = "")
    {
        $valid = false;
        echo "Please enter a password";
        echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Register_Form.php';\",1500);</script>";
    }
    if (strlen($users_Password)>6)
    {
        $valid = false;
        echo "The password you entered is too long, max characters is 6";
        echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Register_Form.php';\",1500);</script>";
    }

    if ($users_ConfirmPassword != $users_Password)
    {
        $valid = false;
        echo "Passwords do not match, Please try again";
        echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Register_Form.php';\",1500);</script>";
    }

    //Separating validation and persistence mean you only
    //open a connection and persist when needed.
    if($valid)
    {
        //NOW WE ONLY CONNECT WHEN YOU NEED TO!                
        $con=mysqli_connect("localhost","root","","book");  

        // check connection
        if(!$con)
        {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }
        //YOU MAY NEED TO SPECIFY THE COLUMNS YOU ENTER
        $stmt = mysqli_prepare($con, "INSERT INTO users VALUES (?,?,?,?,?,?,?,?,?)");
        //ASSUMING ALL 9 PARAMETERS ARE STRINGS hence the sssssssss
        mysqli_stmt_bind_param($stmt, 'sssssssss', $users_Username,$users_Password,$users_FirstName,$users_Surname,$users_AddressLine1,$users_AddressLine2,$users_City,$users_Telephone,$users_Mobile);

        if(mysqli_stmt_execute($stmt))
        {
            echo "User succesfully registered";
            echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Log_In_Screen.php';\",1500);</script>";
        }

        mysqli_close($con);
    }
?>

PHP参数无法在“”中计算,因此您必须使用字符串连接。

您到处都是东西,并且混合了
mysql
mysqli
,更不用说您为SQL注入留下了很大的空间。使用您使用的脚本,我坚持使用
mysqli
使用
prepared语句
,并将验证和持久性分开。有一些评论可以解释其中的一些原因


请给我们看一下您的用户表的模式好吗?有id字段吗?他不应该使用
mysql
扩展…已弃用和过时…他应该使用查询参数…不保护SQL注入。。。如果用户名已被使用,则不进行验证。。。我认为,在他要求解决问题的同时,还有很多其他问题出现了。你把
mysql\uu
mysqli\u
混为一谈,这可能是你问题的一部分:/fy我坚持
mysqli\u
你对SQL注入持开放态度。由于您使用的是mysqli,请利用准备好的语句和,这将修复您可能遇到的任何令人讨厌的引用问题。字符串本身是双引号的,因此将对其进行计算。单引号位于双引号字符串中,因此不属于处理的一部分。
"INSERT INTO users VALUES ('".$users_Username."', '".$users_Password."', '".$users_FirstName."', '".$users_Surname."','".$users_AddressLine1."','".$users_AddressLine2."','".$users_City."','".$users_Telephone."','".$users_Mobile."')";
<?php
    $users_Username = $_POST['Username'];
    $users_Password = $_POST['Password'];
    $users_ConfirmPassword = $_POST['ConfirmPassword'];
    $users_FirstName = $_POST['FirstName'];
    $users_Surname = $_POST['Surname'];
    $users_AddressLine1 = $_POST['AddressLine1'];
    $users_AddressLine2 = $_POST['AddressLine2'];
    $users_City = $_POST['City'];
    $users_Telephone = $_POST['Telephone'];
    $users_Mobile = $_POST['Mobile'];

    //LETS JUST DO ERROR CHECKING ONLY
    $valid = true; //Used to verify that user input is as expected.
    //All the validation as before just as ifs and will set the 
    //$valid flag to false when validation fails.
    if ($users_Username == "")
    {
        $valid = false;
        echo "Please enter a username";
        echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Register_Form.php';\",1500);</script>";
    }
    if ($users_Password = "")
    {
        $valid = false;
        echo "Please enter a password";
        echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Register_Form.php';\",1500);</script>";
    }
    if (strlen($users_Password)>6)
    {
        $valid = false;
        echo "The password you entered is too long, max characters is 6";
        echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Register_Form.php';\",1500);</script>";
    }

    if ($users_ConfirmPassword != $users_Password)
    {
        $valid = false;
        echo "Passwords do not match, Please try again";
        echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Register_Form.php';\",1500);</script>";
    }

    //Separating validation and persistence mean you only
    //open a connection and persist when needed.
    if($valid)
    {
        //NOW WE ONLY CONNECT WHEN YOU NEED TO!                
        $con=mysqli_connect("localhost","root","","book");  

        // check connection
        if(!$con)
        {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }
        //YOU MAY NEED TO SPECIFY THE COLUMNS YOU ENTER
        $stmt = mysqli_prepare($con, "INSERT INTO users VALUES (?,?,?,?,?,?,?,?,?)");
        //ASSUMING ALL 9 PARAMETERS ARE STRINGS hence the sssssssss
        mysqli_stmt_bind_param($stmt, 'sssssssss', $users_Username,$users_Password,$users_FirstName,$users_Surname,$users_AddressLine1,$users_AddressLine2,$users_City,$users_Telephone,$users_Mobile);

        if(mysqli_stmt_execute($stmt))
        {
            echo "User succesfully registered";
            echo "<script>setTimeout(\"location.href = 'http://localhost/webD/Assignment/Log_In_Screen.php';\",1500);</script>";
        }

        mysqli_close($con);
    }
?>