尝试将数据发送到数据库时发生sqlerror

时间:2019-06-16 08:42:19

标签: php mysqli

当我按sigup按钮运行时,该网址给了我sql错误。 当我检查sql错误的写入位置时,我找不到任何错误吗?

这是我的signup.inc.php

<?php
    // isset gör att man endast kan hämta info genom knappen signup annars så kommer error meddelande
    if (isset($_POST['signup-submit'])){

        require 'dbh.inc.php';

        $username  = $_POST['uid'];
        $email  = $_POST['mail'];
        $password  = $_POST['pwd'];
        $passwordRepeat  = $_POST['pwd-repeat'];
    // om username, email, password eller passwordrepeat inte är ifyllt så kommer error
        if (empty($username) || empty($email) || empty($password) || empty($passwordRepeat)){
            header("Location: ../signup.php?error=emptyfields&uid=".$username. "&mail=".$email);
            exit();
        }
    // checkar om mail o username är rätt, om man inte fyllt i rätt mail eller username så får man ingenting skickat tillbaka
        else if (!filter_var($email, FILTER_VALIDATE_EMAIL) && !preg_match("/^[a-zA-Z0-9]*$/", $username)){
            header("Location: ../signup.php?error=invalidmail&uid");
            exit();
        }
    // kollar om mail är rätt och skickar tillbaka username när man blir tillbakaskickad
        else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
            header("Location: ../signup.php?error=invaliduid&mail". $username);
            exit();
        }
    // kollar om användarnamn är rätt, får bara vara tecken inom ramen a-zA-Z0-9, skickar tillbaka mail.
        else if(!preg_match("/^[a-zA-Z0-9]*$/", $username)){
            header("Location: ../signup.php?error=invaliduid&mail". $email);
            exit();
        }
    // kollar om lösenordet matchar repeterade lösenordet, skickar tillbaka mail och username
        else if($password !== $passwordRepeat){
            header("Location: ../signup.php?error=passwordcheckuid".$username. "&mail=". $email);
            exit();
        }
    //  kollar om användarnamet finns i databasen, om det finns kommer error. ? frågetecknet i slutet på första raden användes som placeholder itsället för att folk ska kunna skriva sql kod i username field och förstöra databasen.
        else{
            $sql = "SELECT uidUsers FROM users WHERE uidUsers=?";
            $stmt = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($stmt, $sql)){
            header("Location: ../signup.php?error=sqlerror");
            exit();
        }
    // detta gör att informationen skickas till databasen för att kunna kolla om det matchar
        else{
            mysqli_stmt_bind_param($stmt, "s", $username);
            mysqli_stmt_execute($stmt);
            mysqli_stmt_store_result($stmt);
            $resultCheck = mysqli_stmt_num_rows($stmt);
        if ($resultCheck > 0){
            header("Location: ../signup.php?error=usertaken&mail=".$email);
            exit();
            }
        else {
            $sql = "INSERT INTO users (uidUsers, emailUsers, pwdUsers) VALUES (?, ?, ?)";
            $stmt = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($stmt, $sql)){
            header("Location: ../signup.php?error=sqlerror");
            exit();    
            }
        else {
            $hashedPwd = password_hasg($password, PASSWORD_DEFAULT);

            mysqli_stmt_bind_param($stmt, "sss", $username, $email, $hashedPwd);
            mysqli_stmt_execute($stmt);
            header("Location: ../signup.php?signup=success");
            exit();
        }
        }
        }
        }
        mysqli_stmt_close($stmt);
        mysqli_close($conn);

    }
    else {
        header("Location: ../signup.php");
        exit();
    }

    and this is my dbh.inc.php

    <?php
    //om man jobbar i ex vis wordpress så ska detta vara en databas i wordpress
    $servername = "localhost";
    $dBUsername = "root";
    $dBPassword = "";
    $dBName = "loginsystem";

    $conn = mysqli_connect($servername, $dBUsername, $dBPassword, $dBName);

    if (!$conn){
        die("Connection failed:".mysqli_connect_error());
    }

?>

0 个答案:

没有答案