Php PDO准备的插入语句不工作,不返回错误

Php PDO准备的插入语句不工作,不返回错误,php,mysql,pdo,Php,Mysql,Pdo,我有一个用户注册脚本,除了PDO prepared语句不向数据库中插入值之外,它都可以正常工作。 脚本没有返回错误。 MySQL用户确实拥有我正在执行的操作的权限 Signup.php: echo "<?xml version=\"1.0\" ?>"; if(isset($_POST['email'], $_POST['username'], $_POST['p'], $_POST['fname'], $_POST['lname'], $_POST['gender'])) { f

我有一个用户注册脚本,除了PDO prepared语句不向数据库中插入值之外,它都可以正常工作。 脚本没有返回错误。 MySQL用户确实拥有我正在执行的操作的权限

Signup.php:

echo "<?xml version=\"1.0\" ?>";

if(isset($_POST['email'], $_POST['username'], $_POST['p'], $_POST['fname'], $_POST['lname'], $_POST['gender'])) {

foreach ($_POST as $entry) {
    strip_tags($entry);
}

if(strlen($_POST['email']) < 1) {
    echo "<response>Please enter an email address!</response>";
    exit();
}

if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    echo "<response>Please enter a valid email address!</response>";
    exit();
}

if(strlen($_POST['p']) < 6) {
    echo "<response>Please enter a password that is longer than 6 characters!</response>";
    exit();
}

if(strlen($_POST['username']) < 5 || strlen($_POST['username']) > 30) {
    echo "<response>Please enter a username that is between 5 and 30 characters in length!</response>";
    exit();
}

if(strlen($_POST['fname']) < 1 || strlen($_POST['lname']) < 1) {
    echo "<response>Please enter a name!</response>";
    exit();
}

if(strlen($_POST['gender']) < 1) {
    echo "<response>Please select your gender!</response>";
    exit();
}

//if(strlen($_POST['recaptcha_response_field']) < 1) {
//  echo "<response>Please answer the Captcha!</response>";
//  exit();
//}

if($_POST['gender'] === "Male") {
    $_POST['gender'] = "m";
} else {
    $_POST['gender'] = "f";
}

//$recaptcha_response = null;
//$recaptcha_error = null;

//$recaptcha_response = recaptcha_check_answer($recaptcha_private_key, $_SERVER['REMOTE_ADDR'], $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field']);

//if($recaptcha_response->is_valid) {

    $salt = hash("sha512", uniqid(mt_rand(1, mt_getrandmax()), true));
    $password = $_POST['p'];
    $password = hash("sha512", $password.$salt);

    $info = array(

        "email" => $_POST['email'],
        "password" => $password,
        "salt" => $salt,
        "username" => $_POST['username'],
        "fname" => $_POST['fname'],
        "lname" => $_POST['lname'],
        "gender" => $_POST['gender']

    );

    if(register($info, $database) === true) {

        echo "<response>Registration Successfull! Please check your inbox for an activation email!</response>";

        exit();

    }

//} else {

//  echo "<response>Incorrect Captcha! Please click the reCaptcha refresh button and try again!</response>";

//  exit();

//}

} else {

echo "<response>Invalid Sign-Up Request!</response>";

exit();

}
echo”“;
如果(设置($发布['email'],$发布['username'],$发布['p'],$发布['fname'],$发布['lname'],$发布['gender'])){
foreach($\以$entry形式发布){
带标签($entry);
}
如果(strlen($_POST['email'])<1){
echo“请输入电子邮件地址!”;
退出();
}
如果(!filter_var($_POST['email'],filter_VALIDATE_email)){
echo“请输入有效的电子邮件地址!”;
退出();
}
如果(strlen($_POST['p'])<6){
echo“请输入长度超过6个字符的密码!”;
退出();
}
如果(strlen($_POST['username'))<5 | | strlen($_POST['username'))>30){
echo“请输入长度在5到30个字符之间的用户名!”;
退出();
}
如果(strlen($_POST['fname'])<1 | | strlen($_POST['fname'])<1){
echo“请输入一个名称!”;
退出();
}
如果(strlen($_POST['gender'])<1){
echo“请选择您的性别!”;
退出();
}
//如果(strlen($_POST['recaptcha\u response\u field'])<1){
//echo“请回答验证码!”;
//退出();
//}
如果($_POST['gender']=“Male”){
$_POST['gender']=“m”;
}否则{
$_POST['gender']=“f”;
}
//$recaptcha_response=null;
//$recaptcha_error=null;
//$recaptcha_response=recaptcha_check_response($recaptcha_private_key,$_SERVER['REMOTE_ADDR'],$_POST['recaptcha_challenge_field'],$_POST['recaptcha_response_field']);
//如果($recaptcha\u响应->有效){
$salt=hash(“sha512”,uniqid(mt_rand(1,mt_getrandmax()),true));
$password=$_POST['p'];
$password=hash(“sha512”,$password.$salt);
$info=数组(
“email”=>$\u POST['email'],
“密码”=>$password,
“salt”=>$salt,
“用户名”=>$\u POST['username'],
“fname”=>$\u POST['fname'],
“lname”=>$\u POST['lname'],
“性别”=>$\u POST['gender']
);
if(register($info,$database)==true){
echo“注册成功!请检查您的收件箱中是否有激活电子邮件!”;
退出();
}
//}否则{
//echo“验证码不正确!请单击“重新验证码刷新”按钮并重试!”;
//退出();
//}
}否则{
回显“无效的注册请求!”;
退出();
}
register()函数:

function register($info, $database) {

try {

    $query = $database -> prepare("SELECT email FROM members WHERE email = :email LIMIT 1");

    $query -> execute(

        array(

            ":email" => $info['email']

        )

    );

    $result = $query -> fetch();
    $result = $result[1];

    if(strlen($result) > 0) {

        echo "<response>Email already in use!</response>";

        exit();

    } else {

        $query = $database -> prepare("SELECT username FROM members WHERE username = :username LIMIT 1");

        $query -> execute(

            array(

                ":username" => $info['username']

            )

        );

        $result = $query -> fetch();
        $result = $result[1];

        if(strlen($result) > 0) {

            echo "<response>Username already in use!</response>";

            exit();

        } else {

            $query = $database -> prepare("SELECT password FROM members WHERE password = :password LIMIT 1");

            $query -> execute(

                array(

                    ":password" => $info['password']

                )

            );

            $result = $query -> fetch();
            $result = $result[1];

            if(strlen($result) > 0) {

                echo "<response>Password already in use!</response>";

                exit();

            } else {

                $time = time();

                /*
                * This is where it isn't working
                */

                $query = $database -> prepare("INSERT INTO members (email, password, salt, username, first_name, last_name, signup, last_login, gender) VALUES (:email, :password, :salt, :username, :fname, :lname, :signup, :last_login, :gender)");

                $query -> execute(

                    array(

                        ":email"            => $info['email'],
                        ":password"    => $info['password'],
                        ":salt"               => $info['salt'],
                        ":username"  => $info['username'],
                        ":fname"          => $info['fname'],
                        ":lname"          => $info['lname'],
                        ":signup"         => $time,
                        ":last_login"   => $time,
                        ":gender"        => $info['gender']

                    )

                ) or die(print_r($query->errorInfo(), true));

                $rc = hash("sha512", uniqid(mt_rand(1, mt_getrandmax()), true));

                $query = $database -> prepare("SELECT id FROM members WHERE email = :email LIMIT 1");

                $query -> execute(

                    array(

                        ":email" => $info['email']

                    )

                );

                $user_id = $query -> fetch();

                $query = $database -> prepare("INSERT INTO regcodes (user_id, reg_code) VALUES (:id, :rc)");

                $query -> execute(

                    array(

                        ":id" => $user_id['id'],
                        ":rc" => $rc

                    )

                );

                mail($info['email'], "Activate your account for Code-Cluster!", "Please click the following link to activate your account for Code-Cluster!\r\n http://www.ablp.x10.mx/code-cluster/activate.php?rc=".$rc);

                return true;

                exit();

            }

        }

    }

} catch(PDOException $e) {

    echo "<response>An error occured whilst creating your account! An email has been sent to tech support!</response>";

    mail("admin@codecluster.x10.mx", "Code-Cluster Sign-Up Error", "Sign-Up Error; Timestamp @ " . date() . " ; IP Address : " . $_SERVER['REMOTE_ADDR'] . " ;\r\n" . $e);

    exit();

}

}
函数寄存器($info,$database){
试一试{
$query=$database->prepare(“选择来自成员的电子邮件,其中电子邮件=:电子邮件限制1”);
$query->execute(
排列(
“:email”=>$info['email']
)
);
$result=$query->fetch();
$result=$result[1];
如果(strlen($result)>0){
回显“电子邮件已在使用!”;
退出();
}否则{
$query=$database->prepare(“从username=:username LIMIT 1的成员中选择用户名”);
$query->execute(
排列(
“:username”=>$info['username']
)
);
$result=$query->fetch();
$result=$result[1];
如果(strlen($result)>0){
echo“用户名已在使用!”;
退出();
}否则{
$query=$database->prepare(“从password=:password LIMIT 1的成员中选择密码”);
$query->execute(
排列(
“:password”=>$info['password']
)
);
$result=$query->fetch();
$result=$result[1];
如果(strlen($result)>0){
echo“密码已在使用!”;
退出();
}否则{
$time=time();
/*
*这就是它不起作用的地方
*/
$query=$database->prepare(“插入成员(电子邮件、密码、salt、用户名、名字、姓氏、注册、上次登录、性别)值(:email、:password、:salt、:username、:fname、:lname、:signup、:上次登录、:gender)”);
$query->execute(
排列(
“:email”=>$info['email'],
“:password”=>$info['password'],
“:salt”=>$info['salt'],
“:username”=>$info['username'],
“:fname”=>$info['fname'],
“:lname”=>$info['lname'],
“:注册”=>$time,
“:last_login”=>$time,
“:gender”=>$info['gender']
)
)或者死(print_r($query->errorInfo(),true));
$rc=hash(“sha512”,uniqid(mt_rand(1,mt_getrandmax()),true));
$query=$database->prepare(“从email=:email LIMIT 1的成员中选择id”);
$query->execute(
排列(
“:email”=>$info['email']
)
);
$user_id=$query->fetch();
$query=$database->prepare(“插入regcode(用户id,注册码)值(:id,:rc)”);
$query->execute(
排列(
“:id”=>$user\u id['id'],
“:rc”=>$rc
)
);
mail($info['email'],“激活代码群集帐户!”,“请单击以下链接激活代码群集帐户!\r\nhttp://www.ablp.x10.mx/code-cluster/activate.php?rc=“$rc);
返回true;
退出();
}
}
}
}捕获(PDO$e){
echo“创建帐户时出错!已向技术支持发送电子邮件!”;
邮件(“admin@codecluster.x10.mx,“代码群集注册错误”,“注册错误;时间戳@”.date()
array(
        ":email" => $info['email']
     )