2017-12-29 23 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

あなたが割り当てられたIDを取得した後、たとえばmysqli_multi_queryのために、使用することができます最初の挿入まで(この場合は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);