Php Mysql INSERT,但如果重复:请勿插入并获取原始ID

时间:2016-01-08 17:23:48

标签: php mysqli duplicates

情况:我有3张桌子: 人(peopleID,firstName,lastName), phoneNumbers(phoneID,countryCode,areaCode,phoneNumber,extension) 和peoplePhoneNumbers(peopleID,phoneID)(这是一个带有多个关系的外键的联结表)。

使用一种表格更新所有内容。

目标:假设我有: 约翰史密斯201 1111111 23, 如果我输入: Paul Lennon 201 1111111 23(同一个电话号码) 系统应该: 1)在表人中创建一个新行(使用新ID) 2)不要在桌面电话中创建新行并返回已用于同一电话号码的ID。 (2个电话号码相同,他们应该有相同的区号,相同的号码和相同的分机号。)

这是我到目前为止的代码:

    mysqli_query($link, "SET AUTOCOMMIT=0") or die(mysqli_error($link));
    mysqli_query($link,"START TRANSACTION") or die(mysqli_error($link));
    $sql1 = "INSERT INTO tbl_people (firstname, lastname)
        VALUES ('$firstname', '$lastname');";

    $sql2 ="INSERT INTO tbl_PhoneNumbers (AreaCode, PhoneNumber)
        VALUES ('$areamobile', '$mobile');"; 

    mysqli_query($link, $sql1) or die('Error: ' . mysqli_error($link));
    $last_people_id = mysqli_insert_id($link);

    mysqli_query($link, $sql2) or die('Error: ' . mysqli_error($link));
    $last_phone_id = mysqli_insert_id($link);       

    $sql3 ="INSERT INTO tbl_peoplephonenumbers (peopleID, phoneID)
        VALUES ('$last_people_id', '$last_phone_id');"; 
    mysqli_query($link, $sql3) or die(mysqli_error($link));

    header("Location: index.php?act=edit&people_id=$last_people_id"); /*after adding new person goes to edit page*/
    mysqli_query($link, "COMMIT")  or die(mysqli_error($link));
    mysqli_query($link, "SET AUTOCOMMIT=1") or die(mysqli_error($link));

0 个答案:

没有答案