PHP/SQL在向表中插入值并将一个值设置为唯一值后,就不能再插入任何值了


PHP/SQL After insert value to table and set one value as unique, no more values can be inserted

我尝试创建规范化的数据库。

当我第一次插入值时,一切都很正常,但(我认为是因为将值设置为UNIQUE)它不想添加。

这是我的查询(如果需要,我也可以显示数据库)

$query = "INSERT INTO userMore (userEmailG, userGenderG, userAboutG, userBirthdayG, userLanguageG) values ('$userEmailG','$userGenderG', '$userAboutG', '$userBirthdayG', '$userLanguageG');";
$query .= "INSERT INTO userBasic (id_uM, userNameG, userEmailG) values ((SELECT id_uM FROM userMore WHERE userEmailG='$userEmailG'),'$userNameG', '$userEmailG');";
$query .= "INSERT INTO dvlaInfoMore (sixMonthRate, twelveMonthRate, wheelPlan, revenueWeight, typeApproval, taxStatus, taxed, taxDetails, mot, motDetails) values ('$sixMonthRate', '$twelveMonthRate', '$wheelPlan', '$revenueWeight', '$typeApproval', '$taxStatus', '$taxed', '$taxDetails', '$mot', '$motDetails');";
$query .= "INSERT INTO dvlaInfoBasic (id_uDInfoM, plateNumber, make, model, yearOfManufacture, cylinderCapacity, dateofFirstRegistration, co2Emissions, fuelType, colour, vin, transmission)
values (LAST_INSERT_ID(), '$plateNumber', '$make', '$model', '$yearOfManufacture', '$cylinderCapacity', '$dateofFirstRegistration', '$co2Emissions', '$fuelType', '$colour', '$vin', '$transmission');";
$query .= "INSERT INTO userLocation (latitude, longitude, postCode) values ('$latitude', '$longitude', '$postCode');";
$query .= "INSERT INTO userChioce (doWithCar) values ('$doWithCar');";
$query .= "INSERT INTO userStatus (userIdG) values ('$userIdG');";
$query .= "INSERT INTO userMain (userIdG, id_uB, id_uDInfoB, id_uChoice, id_uLoc, id_uStat) values ('$userIdG', (SELECT id_uB FROM userBasic WHERE userEmailG='$userEmailG'), (SELECT id_uDInfoB FROM dvlaInfoBasic WHERE plateNumber ='$plateNumber'), LAST_INSERT_ID(), (SELECT id_uLoc FROM userLocation WHERE postCode='$postCode'),(SELECT id_uStat FROM userStatus WHERE userIdG='$userIdG'))";

所以,第一次userMore添加了userBasic,然后是dvlaInfoMore,然后是dvlaInfoBasic,还有一个

我在userBasic列userNameG中设置为UNIQUE,所以如果插入了已经存在的电子邮件,它不想走得更远,但如果没有,则所有内容都添加正确。

所有我想要的,它将继续插入不同的汽车,然后通过使用表userMain中现有的电子邮件显示结果。

附言如果我试图使用相同的电子邮件地址添加不同的汽车,它不会起作用。,基本上不添加任何内容。

正如您自己所怀疑的那样,将现有密钥定义为UNIQUE的INSERT将失败。

一种解决方法是使用REPLACE INTO语句而不是INSERT(请参阅手册)。