Mysqli准备的语句-数据未进入数据库(但成功发送消息)

时间:2019-02-08 11:29:50

标签: php mysqli prepared-statement session-variables

我不确定该如何命名;挣扎了好几个小时,这是一个奇怪的问题。

我有以下准备好的声明:

    $query = mysqli_prepare($con, "INSERT INTO users 
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 
                        ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
    $query->bind_param('issssssisisiiisssssssssissssi', 
                $empty, $fname, $lname, $username, 
                $em, $hash, $date, $empty, 
                $empty, $empty, $profile_pic, $zero, 
                $zero, $zero, $no, $comma, 
                $empty, $empty, $empty, $empty, 
                $empty, $show, $empty, $empty, 
                $empty, $banner_pic, $banner_pic_two, $token, $two);
    $query->execute();
    $query->close();

    if ($query) {
        array_push($error_array, "<span>Check Your Email to Activate Your Account!</span><br>");

在达到这一点之前,有一些制衡手段,但如果可以的话,我会尽力而为。填写注册表后,我收到消息Check Your Email to Activate Your Account!,因此我执行了此操作并激活,该操作也可以检出。当我登录时,它不在dB中-因此,我当然会收到一条错误消息msg。我还可以在phpmyAdmin中看到它不存在。所以我以为它在$query->bind_param这里。经历了这个过程,以及它与dB的对应关系,看起来不错。

但是(当我输入一个已经在dB中的某人的名字和姓氏时,这很奇怪),注册有效。我不能使用同一封电子邮件,(我会收到一条错误消息),但是我也不能在新电子邮件中使用新名称。名称必须是已经以dB为单位的名称。这就是输入$fname$lname的方式。

<div class="account-row">
    <label for="firstname">FIRST NAME</label>
    <input type="text" class="account-input" name="reg_fname" id="firstname" value="<?php if(isset($_SESSION['reg_fname'])){
    echo $_SESSION['reg_fname'];
    }
    ?>">
</div>
<div class="account-row">
    <label for="lastname">LAST NAME</label>
    <input type="text" class="account-input" name="reg_lname" id="lastname" value="<?php if(isset($_SESSION['reg_lname'])){
    echo $_SESSION['reg_lname'];
    }
    ?>">
</div> 

提交表单后的处理方式如下:

//Declaring varibales to prevent errors
$fname = ""; //First Name
$lname = ""; //Last Name
$email = ""; //email
$em2 = ""; //email 2
$password = ""; //password
$password2 = ""; //password 2
$date = ""; //Sign up date
$banner_pic = "assets/images/banner_pics/default/default.gif";
$banner_pic_two = "assets/images/banner_pics/default/default2.gif";
$error_array = array(); //Holds error messages

if(isset($_POST['register_button'])){

//Registration form values

// First name
$fname = strip_tags($_POST['reg_fname']); //Remove html tags
$fname = str_replace(' ', '', $fname); //Removes spaces
$fname = ucfirst(strtolower($fname)); //Uppercase first letter
$_SESSION['reg_fname'] = $fname; //Stores first name into session variable

// Last name
$lname = strip_tags($_POST['reg_lname']); //Remove html tags
$lname = str_replace(' ', '', $lname); //Removes spaces
$lname = ucfirst(strtolower($lname)); //Uppercase first letter
$_SESSION['reg_lname'] = $lname; //Stores last name into session variable

除此之外,我还有一些代码,用concats来创建用户名的名字和姓氏,并在末尾添加整数(如果已经存在)。这是可行的,因为名称已经在dB中,所以b / c一直在结尾,只是不断添加1,2,3等,但是我多次注册它。但是,当我再次尝试使用新的名字和姓氏时(再次),它不会输入dB。从我发布的内容中可以看到任何人吗?我在本地工作,所以想知道它是否与会话变量有关……但我看不出怎么办?

0 个答案:

没有答案