没有给出错误,脚本也没​​有执行

时间:2014-03-17 03:17:54

标签: php mysql pdo

如前面的问题所述,我的网站上有一个注册系统,我正在将我的mysql语句更新为PDO语句。我已经更新了所有语句,现在脚本已经运行但它没有执行任何脚本并且没有给我任何错误。它将我重定向回registration.php页面。

reg.php

<?php

include("sql.php");
    require("includes/password.php");

session_start(); //Start session for writing

$errmsg = array(); //Array to store errors

    $noterr = array();

$errflag = false; //Error flag

function UniqueID() {
    include("sql.php");
$UID = rand(); //Create unique ID
$check = $db->prepare('SELECT * FROM `users` WHERE `UID` = :UID');

    $UIDarray = array(
        UID => $UID
);

    $check->execute($UIDarray);

if($check->fetchColumn() > 0) { //Check if it exists
    UniqueID(); //Redo the function
} else {
    return $UID; //return the uniqueid
}
}

$UID = UniqueID(); //Unique ID


$username = ($_POST['username']); //Username
$email = $_POST['email']; //Email
password_hash($_POST['password'], PASSWORD_BCRYPT, array("cost" => 10)); //Password
password_hash($_POST['rpassword'], PASSWORD_BCRYPT, array("cost" => 10)); //Repeated Password

//Check Username
if($username == '') {
    $errmsg[] = '<span style="color: red;">Where is your username?</span>'; //Error
    $errflag = true; //Set flag so it says theres an error
}



//Check Password
if($password == '') {
    $errmsg[] = '<span style="color: red;">Oops! No password!</span>'; //Error
    $errflag = true; //Set flag so it says theres an error
}

//Check Repeated Password
if($rpassword == '') {
    $errmsg[] = '<span style="color: red;">Your repeated password is missing!</span>'; //Error
    $errflag = true; //Set flag so it says theres an error
}

//Make sure passwords match
if(strcmp($password, $rpassword) != 0 ) {
    $errmsg[] = '<span style="color: red;">Passwords do not match</span>'; //Error
    $errflag = true; //Set flag so it says theres an error
}

//Make sure username is availible
if($username != '') {
    $qry = $db->prepare("SELECT * FROM `users` WHERE `Username` = :username"); //MySQL query

            $params = array(
                  username => $username
          );

    $qry->execute($params);
    if($qry->execute($params)) {
        if($qry->fetchColumn() > 0) { //If username is in use
            $errmsg[] = '<span style="color: red;">Sorry, that username is already in use</span>'; //Create error
            $errflag = true; //Set flag so it says theres an error
        }
        $qry->closeCursor();
    }
}

    if(isset($_POST["captcha"])&&$_POST["captcha"]!=""&&$_SESSION["code"]==$_POST["captcha"])
            {
             }
     else
     {
    $errmsg[] = '<span style="color: red;">That is not what the picture displayed!</span>'; // Create error
    $errflag = true; //Set flag so it says theres an error
    }

//If there are input validations, redirect back to the registration form
if($errflag) {
    $_SESSION['ERRMSG'] = $errmsg; //Write errors
    session_write_close(); //Close session
    header("location: register.php"); //Rediect
    exit(); //Block scripts
}

//Create INSERT query
$query = $db->prepare("INSERT INTO `userauthenticate`.`users`(`UID`, `Username`, `Email`, `Password`) VALUES(:UID,:username,:email,:password)");

$params2 = array(
    UID => $UID,
    username => $username,
    email => $email,
    password => $password
 );

$query->execute($params2);

//Check whether the query was successful or not
if($query->execute($params2)) {
    header("Location: login.php");
    exit();
} else {
    die("There was an error, try again later");
}
?>

sql.php

<?php

ob_start();
session_start();

//database credentials
$dbhost = 'dbhost';
$dbuser = 'dbuser';
$dbpass = 'dbpass';
$dbname = 'dbname';

$db = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>

1 个答案:

答案 0 :(得分:-1)

如果有任何

,可能需要添加一些try / catch块来捕获任何错误
//Make sure username is availible
if($username != '') {
    try {
        $qry = $db->prepare("SELECT * FROM `users` WHERE `Username` = :username"); //MySQL query

                $params = array(
                      username => $username
              );

        $result = $qry->execute($params);
        if($result) {
            if($qry->fetchColumn() > 0) { //If username is in use
                $errmsg[] = '<span style="color: red;">Sorry, that username is already in use</span>'; //Create error
                $errflag = true; //Set flag so it says theres an error
            }
            $qry->closeCursor();
        }
    }
    catch(PDOException e) {
        // write the error to the log
        $errmsg = $e->getMessage();
        error_log('$errmsg-> '.$errmsg);
        echo $errmsg;
    }
}

    if(isset($_POST["captcha"]) && $_POST["captcha"] !="" && $_SESSION["code"] == $_POST["captcha"])
            {
             }
     else
     {
    $errmsg[] = '<span style="color: red;">That is not what the picture displayed!</span>'; // Create error
    $errflag = true; //Set flag so it says theres an error
    }

//If there are input validations, redirect back to the registration form
if($errflag) {
    $_SESSION['ERRMSG'] = $errmsg; //Write errors
    session_write_close(); //Close session
    header("location: register.php"); //Rediect
    exit(); //Block scripts
}

try {
    //Create INSERT query
    $query = $db->prepare("INSERT INTO `userauthenticate`.`users`(`UID`, `Username`, `Email`, `Password`) VALUES (:UID,:username,:email,:password)");

    $params2 = array(
        UID => $UID,
        username => $username,
        email => $email,
        password => $password
     );

    $result $query->execute($params2);
}
catch(PDOException e) {
    // write the error to the log
    $errmsg = $e->getMessage();
    error_log('$errmsg-> '.$errmsg);
    echo $errmsg;
}

//Check whether the query was successful or not
if($result) {
    header("Location: login.php");
    exit();
} else {
    die("There was an error, try again later");
}
?>