【发布时间】:2016-04-15 19:50:50
【问题描述】:
我尝试创建标准化数据库。
当我第一次插入值时,一切正常,但是(我认为将值设置为唯一的原因)它不想添加。
这是我的查询(如果需要,我也可以显示数据库)
$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.如果我尝试使用相同的电子邮件地址添加不同的汽车,它不起作用。基本上不要添加任何东西。
【问题讨论】:
-
@JFOG 如果您想防止重复的电子邮件地址,
userEmailG不应该是唯一的(而不是userNameG)吗?目前,您正在防止重复名称。 -
@Guido 目前唯一的是'userEmailG','userBasic'和'userMore'没有问题,主要问题为什么它不想添加不同的汽车并使用现有的'userBasic'显示' 'userMain' 中具有不同 'dvlaInfoBasic' 的 userBasic ID'
-
@Guido 问题是我可以添加第一辆车信息但我可以添加第二辆车信息,所以第二次我想添加一些东西我不会改变任何东西,除非我使用不同的电子邮件地址并且它执行得很好.所以基本上每次我想有不同的电子邮件时都能完美执行,我该如何解决?
-
我刚刚注意到的一件事:您的
INSERT INTO userMain将LAST_INSERT_ID()插入到id_uChoice列中。但是,在这个阶段,最后一个插入 ID 来自上一个查询INSERT INTO userStatus,而不是userChoice。这是你想要的吗? -
@Guido 你有时间吗?我可以在屏幕上向您展示我的数据库等等吗?拜托,只是像个白痴一样坐了 5-7 个小时,解决不了。
标签: php mysql sql-server database insert