2017-12-29 2 views
0

가 어떻게 외국 있도록 ID가 일치하는 데이터를 추가하여 PHP를 사용할 수 있습니다 :이 예에서는[MariaDB]

, 나는를위한 테이블이 '회원'과 '이메일'을위한 별도의 테이블. 회원은 여러 개의 전자 메일을 가질 수 있으므로 구성원 ID가 포함 된 전자 메일을 외래 키로 저장하는 별도의 테이블이 만들어집니다.

필드가 제출되면 두 테이블 모두에 데이터를 삽입하는 코드를 작성하려면 어떻게해야합니까?

은 내 가장 최근의 (실패) 시도 :

PHP 블록 :

$query= 
"INSERT INTO Members(FIRST_NAME, LAST_NAME, TITLE, INSTITUTION) VALUES ('$first_name', 
'$last_name','$title','$institution'); 
INSERT INTO EMAIL(Members_ID, EMAIL) VALUES 
(LAST_INSERT_ID(), '$email'); 
INSERT INTO WEBSITE(Members_ID, WEBSITE) VALUES 
(LAST_INSERT_ID(), '$website');"; 
mysqli_query($connection,$query) or die(mysqli_error($connection)); 

SQL 블록 : 검색 한 후

CREATE TABLE Members(
    ID INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE, 
    FIRST_NAME TEXT(16), 
    LAST_NAME TEXT(16, 
    TITLE TEXT(7), /** 7 CHARS for 'Student'*/ 
    INSTITUTION VARCHAR(2048), 
    PRIMARY KEY(ID) 
); 
    CREATE TABLE EMAIL(
    Members_ID INT UNSIGNED NOT NULL UNIQUE, 
    EMAIL VARCHAR(2048), 
    FOREIGN KEY (Members_ID) REFERENCES Members(ID) 
); 
    CREATE TABLE WEBSITE(
    Members_ID INT UNSIGNED NOT NULL UNIQUE, 
    WEBSITE VARCHAR(2048), 
    FOREIGN KEY (Members_ID) REFERENCES Members(ID) 
); 
+0

회원이 이미 테이블에 있다면 INSERT가 실패하고 ID가 없습니다. IODKU를보십시오. –

답변

1

당신은 예를 mysqli_multi_query를 들어, 사용할 수는 ID 할당 첫 번째 삽입 (이 경우 LAST_INSERT_ID()에 너무 많이 의존하지 않음) :

$conn = mysqli_connect(...); 

$query = "INSERT INTO Members (FIRST_NAME,LAST_NAME,TITLE,INSTITUTION) VALUES ('$first_name','$last_name','$title','$institution')"; 
mysqli_query($conn, $query); 
$lid = mysqli_insert_id($conn); 

$query = "INSERT INTO EMAIL (Members_ID,EMAIL) VALUES ($lid,'$email');"; 
$query .= "INSERT INTO WEBSITE (Members_ID,WEBSITE) VALUES ($lid,'$website');"; 
mysqli_multi_query($conn, $query);