Home > Blockchain >  PHP form insert in Mysql database
PHP form insert in Mysql database

Time:11-13

I created sign up form with Full name (cele meno), Login, Password and Confirm password, but it has error. I can´t find any mistake. I am begginer programmer and I can´t find any mistake or is that typo error? I don´t have any ideas to fix it. Can you help me please? Thanks very much.

<?php
// Include config file
require_once "config.php";
 
// Define variables and initialize with empty values
$username = $celemeno = $password = $confirm_password = "";
$username_err = $celemeno_err = $password_err = $confirm_password_err = "";
 
// Processing form data when form is submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){
 
    // Validate username
    if(empty(trim($_POST["username"]))){
        $username_err = "Please enter a username.";
    } else{
        // Prepare a select statement
        $sql = "SELECT id FROM tools_users WHERE username = ?";
        
        if($stmt = mysqli_prepare($link, $sql)){
            // Bind variables to the prepared statement as parameters
            mysqli_stmt_bind_param($stmt, "s", $param_username);
            
            // Set parameters
            $param_username = trim($_POST["username"]);
            
            // Attempt to execute the prepared statement
            if(mysqli_stmt_execute($stmt)){
                /* store result */
                mysqli_stmt_store_result($stmt);
                
                if(mysqli_stmt_num_rows($stmt) == 1){
                    $username_err = "This username is already taken.";
                } else{
                    $username = trim($_POST["username"]);
                }
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            mysqli_stmt_close($stmt);
        }
    }
    
    
    // Validate celemeno
    if(empty(trim($_POST["celemeno"]))){
        $celemeno_err = "Please enter a celemeno.";
    } else{
        // Prepare a select statement
        $sql = "SELECT id FROM tools_users WHERE celemeno = ?";
        
        if($stmt = mysqli_prepare($link, $sql)){
            // Bind variables to the prepared statement as parameters
            mysqli_stmt_bind_param($stmt, "s", $param_celemeno);
            
            // Set parameters
            $param_celemeno = trim($_POST["celemeno"]);
            
            // Attempt to execute the prepared statement
            if(mysqli_stmt_execute($stmt)){
                /* store result */
                mysqli_stmt_store_result($stmt);
                
                if(mysqli_stmt_num_rows($stmt) == 1){
                    $celemeno_err = "This celemeno is already taken.";
                } else{
                    $celemeno = trim($_POST["celemeno"]);
                }
            } else{
                echo "Oops! Something went wrong. Please try again later. - error in celemeno";
            }

            // Close statement
            mysqli_stmt_close($stmt);
        }
    }
    
    
    // Validate password
    if(empty(trim($_POST["password"]))){
        $password_err = "Please enter a password.";     
    } elseif(strlen(trim($_POST["password"])) < 6){
        $password_err = "Password must have atleast 6 characters.";
    } else{
        $password = trim($_POST["password"]);
    }
    
    // Validate confirm password
    if(empty(trim($_POST["confirm_password"]))){
        $confirm_password_err = "Please confirm password.";     
    } else{
        $confirm_password = trim($_POST["confirm_password"]);
        if(empty($password_err) && ($password != $confirm_password)){
            $confirm_password_err = "Password did not match.";
        }
    }
    
    // Check input errors before inserting in database
    if(empty($username_err) && empty($celemeno_err) && empty($password_err) && empty($confirm_password_err)){
        
        // Prepare an insert statement
        $sql = "INSERT INTO tools_users (username, password, celemeno) VALUES (?, ?, ?)";
         
        if($stmt = mysqli_prepare($link, $sql)){
            // Bind variables to the prepared statement as parameters
            mysqli_stmt_bind_param($stmt, "ss", $param_username, $param_password, $param_celemeno);
            
            // Set parameters
            $param_username = $username;
            $param_celemeno = $celemeno;
            $param_password = password_hash($password, PASSWORD_DEFAULT); // Creates a password hash
            
            // Attempt to execute the prepared statement
            if(mysqli_stmt_execute($stmt)){
                // Redirect to login page
                header("location: login.php");
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }

            // Close statement
            mysqli_stmt_close($stmt);
        }
    }
    
    // Close connection
    mysqli_close($link);
}
?>

I expect to this code will working in form on this page

CodePudding user response:

Like @brombeer mentioned in the comment section. Your bind param contains 3 variables meaning you're missing one s. Add one more s..

mysqli_stmt_bind_param($stmt, "sss", $param_username, $param_password, $param_celemeno);
  • Related