-1

私はphp mysqlを使用しています.3つの異なるテーブルに挿入しようとしていますが、3番目のテーブルは値を受け取りません.これは最後のテーブルです.アイデアは、新しいテーブルを作成する時点ですべてのテーブルに挿入されたuser_idを取得したいです他のフィールドを更新したいときは、他のテーブルの外部キーである user_id を参照するだけです。以下は私のコードです:

<?php
    #connect to the db
    require_once('db.inc.php');
?>

<?php 
    $date_created = date('y-m-d h:i:s a');
    $username = (isset($_POST['username'])) ? trim($_POST['username']): '';
    $Previllage =(isset($_POST['Previllage']))? trim($_POST['Previllage']): '';

    #second tanble values 
    $title=(isset($_POST['title']))? trim($_POST['title']): '';
    $firstname=(isset($_POST['firstname']))? trim($_POST['firstname']): '';
    $lastname=(isset($_POST['lastname']))? trim($_POST['lastname']): '';
    $client_code=(isset($_POST['client_code']))? trim($_POST['client_code']): '';
    $job_approval=(isset($_POST['job_approval']))? trim($_POST['job_approval']): '';
    $address=(isset($_POST['address']))? trim($_POST['address']): '';
    $cell=(isset($_POST['cell']))? trim($_POST['cell']): '';
    $tel=(isset($_POST['tel']))? trim($_POST['tel']): '';
    $email=(isset($_POST['email']))? trim($_POST['email']): '';
    $company=(isset($_POST['company']))? trim($_POST['company']): '';
    $province=(isset($_POST['province']))? trim($_POST['province']): '';
    $ip_address=$SERVER['REMOTE_ADDR'];

    if(empty($_POST['firstname'])){
        exit();
    }

    #check box 
    if(isset($_POST['department_type'])) {
        $value = implode(",", $_POST['department_type']);   
    } else {
        $value = "";
    }
    #check box 

    #Image code 
    $target ='../t/images/';
    $target = $target.basename($_FILES['imagename']['name']);
    $pic = ($_FILES['imagename']['name']);
    ########################################################
    #end

    try {
        $query="INSERT INTO tish_user(username,Previllage,date_created)
                VALUES(:username,:Previllage,:date_created)";
        $insert = $con->prepare($query);
        $insert->execute(array(
                    ':username'=>$username,
                    ':Previllage'=>$Previllage,
                    ':date_created'=>$date_created)
                );

        # insert into another table
        $query="INSERT INTO tish_clientinfor(
                user_id,title,firstname,lastname,
                client_code,department_type,job_approval,province,
                company,address,cell,tel,email,date_registered)
                VALUES(
                LAST_INSERT_ID(),
                :title,:firstname,:lastname,
                :client_code,:department_type,:job_approval,:province,:company,:address,
                :cell,:tel,:email,
                :date_registered)";

        $insert = $con->prepare($query);
        $insert->execute(array(
                    ':title'=>$title,
                    ':firstname'=>$firstname,
                    ':lastname'=>$lastname,
                    ':client_code'=>$client_code,
                    ':department_type'=>$value,
                    ':job_approval'=>$job_approval,
                    ':province'=>$province,
                    ':company'=>$company,
                    ':address'=>$address,
                    ':cell'=>$cell,
                    ':tel'=>$tel,
                    ':email'=>$email,
                    ':date_registered'=>$date_created)
                );

        #intert into the security table 
        $query = "INSERT INTO tish_security(ip_address,user_id,date_registered)
                VALUES(
                :ip_address,
                LAST_INSERT_ID(),
                :date_registered)";
        $insert = $con->prepare($query);
        $insert->execute(array(
                    ':ip_address'=>$ip_address,
                    ':date_registered'=>$date_created)
                );

        # insert into another table
    } catch(PDOException $e) {
        echo $e->getMessage();
    }
?>
4

1 に答える 1

1

3 番目のクエリで使用LAST_INSERT_ID()すると、直前のクエリ、つまり最初のクエリではなく 2 番目のクエリに挿入されたレコードの ID が取得されます。LAST_INSERT_ID()を取得し、それを PHP の変数に格納して、他の両方のクエリで使用するには、最初のクエリの後に別のクエリを作成する必要があります。

于 2013-02-04T08:23:22.107 に答える