PHP/SQL 将值插入表并将一个值设置为唯一后,无法插入更多值

标签 php mysql sql-server database insert

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

当我第一次插入值时,一切都工作正常,但是(我认为设置值是唯一的原因)它不想添加。

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

$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 中的现有电子邮件显示结果。

P.S.如果我尝试使用相同的电子邮件地址添加不同的汽车,这是行不通的。基本上不要添加任何东西。

最佳答案

正如您所怀疑的那样,使用定义为 UNIQUE 的现有键进行 INSERT 将会失败。

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

关于PHP/SQL 将值插入表并将一个值设置为唯一后,无法插入更多值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36655726/

相关文章:

php - 无法使用php将表单数据保存到sql表

mysql - 我需要在同一个表中的每个日期查询多个列

sql - 从存储过程返回多个值

sql - 使用 MS SQL Identity 是一个好的做法吗?

sql - 发生文件激活错误。物理文件名 'N@filename

php - Mysql 错误 - 您无法在 FROM 子句中指定用于更新的目标表 'tbl_writerremark'

Java POST 请求不发送变量

mysql - Mamp MySQL 无法在第二个 OS X 用户帐户中运行

php - Jquery - 在mysql中查找两个唯一id之间的范围

php - 使用动态数据自动刷新 div