繁体   English   中英

尝试在两个不同的表中输入数据时,mysqli查询重复

[英]mysqli query duplicating when trying to enter data in two different tables

嗨,我有一个表格,教师可以创建一个新学校作为用户,教师的学校获得一个ID。 所以我检查数据库以确保“school”表中的id不存在。 如果是的话,我会获得该学校ID,以便教师可以使用它创建个人资料。 如果它尚不存在则创建一个新的并输入该教师学校的“学校”表和“用户”表。

它工作正常,只是每次填写表单时数据输入两次,但仅在“USERS”表中输入。 在“学校”表中,它应该按原样输入一次。

有人能告诉我为什么会这样吗? 我一直在找几个星期。

码:

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


    $name=$_POST['name'];
    $name = mysqli_real_escape_string($con,$name);
    $lastname=$_POST['lastname'];
    $lastname = mysqli_real_escape_string($con,$lastname);
    $email=$_POST['email'];
    $email = mysqli_real_escape_string($con,$email);
    $phone=$_POST['phone'];
    $phone = mysqli_real_escape_string($con,$phone);
    $school=$_POST['school'];
    $school = mysqli_real_escape_string($con,$school);
    $address=$_POST['address'];
    $address = mysqli_real_escape_string($con,$address);
    $region=$_POST['region'];
    $region = mysqli_real_escape_string($con,$region);
    $state=$_POST['state'];
    $state = mysqli_real_escape_string($con,$state);
    $zip = $_POST['zip'];
    $zip = mysqli_real_escape_string($con,$zip);
    $password= $_POST['password'];
    $hash = password_hash($password, PASSWORD_BCRYPT);

      //GET STATE NAME
      $getState = "SELECT state from `states` WHERE id= '$state'";
      $stateRes = mysqli_query($con, $getState);
      $stateRow = mysqli_fetch_array($stateRes);
      $stateName = $stateRow['state'];


      //CHECK SCHOOL

    $checkSchool = "SELECT school from `schools` WHERE school= '$school'";
    $schoolRes = mysqli_query($con, $checkSchool);
    $schoolCount = mysqli_num_rows($schoolRes);

    if($schoolCount >0){
        //if school exist get it's id
        $schoolIdSql = "SELECT id from `schools` WHERE school= '$school'";
        $schoolIdRes = mysqli_query($con, $schoolIdSql);
        $schoolRow = mysqli_fetch_array($schoolIdRes);
        $schoolId = $schoolRow['id'];
    }else{
        //if doesn't exist insert new school
        $schoolquery = "INSERT INTO schools (state_id, school) VALUES ('$state','$school')";
        $schoolresult = mysqli_query($con, $schoolquery);
        //get new school id
        $schoolIdSql = "SELECT id from `schools` WHERE school= '$school'";
        $schoolIdRes = mysqli_query($con, $schoolIdSql);
        $schoolRow = mysqli_fetch_array($schoolIdRes);
        $schoolId = $schoolRow['id'];
    }



      //CHECK USER


    $checkUser = "SELECT email from `Users` WHERE email= '$email'";
    $userRes = mysqli_query($con, $checkUser);
    $userCount = mysqli_num_rows($userRes);

    if($userCount >0){
        $submitted = "Email is not available";
        $invalid = '<input id="email" type="text" name="email" class="form-control is-invalid" required="required" data-error="email is required." data-remote="/validate">';

    } else{

        $userId = rand(1,9999999);
        $check_userId ="select count(*) count from Users where user_id = " . $userId;
        while ($row['count'] > 0);



        $query = "INSERT INTO Users (id, user_type, name, lastname, email, phone, school, address, state, zip, password, status) VALUES ('$userId','teacher','$name', '$lastname', '$email', '$phone', '$schoolId', '$address', '$stateName', '$zip', '$hash', 'active')";
        $result = mysqli_query($con, $query);


        if(!$result = $con->query($query)){
            die('there was an error running query [' . $con->error . ']');
        }else {
              header("location: thankyou");
        } 
    }

  }

似乎早期编程的一些旧文物幸免于难:

也许这是新的查询:

$result = mysqli_query($con, $query);

也许这是旧的?

if(!$result = $con->query($query))

应该这样做,并成为插入副本的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM