如何在数据库中插入一些与另一行相同的信息?

问题描述:

赞,我有一行包含这个information。隐藏的列确定它是否在研究中可见(0)或不(1)。如何在数据库中插入一些与另一行相同的信息?

我想用hidden number =1的行插入一个具有相似信息(特别是同名)的新行。但现在,如果我插入具有hidden number = 1(如IT-Melanie)的计算机的相同信息,则它只会'刷新'已存在的行,而不会创建新行!有可能创建一个具有相同名称的新行(如IT-Melanie),但也许有一些不同的其他信息可以在没有此更新的情况下插入已存在的行?就好像我们在数据库中复制了一行,但拥有所有相同的信息。

唯一觉得我在这里发现它重复在javascript中的一行,它不是我想要的。我尝试插入多个时间信息以使两行相似而没有成功,只更新数据库中已存在的行!

回顾:我想要插入一台新的计算机,其名称与数据库中已存在的计算机名称相同,但旧计算机将有一个hidden number = 1和一个新的计算机= 0

问题:我们可以在不编辑旧行的情况下放两行相同的computer_name吗?

实施例:

旧行:Computer_name = It_melanie product_number = xxxxx-xxxxxx-xxxxx-xxxxxx-xxxxx [...] hidden = 1

新行:Computer_name = It_melanie product_number = xxxxx-xxxxxx-xxxxx-xxxxxx-xxxxx [...] hidden = 0

Unique Key

我的代码

//Get informations in the form and insert it into db 
    $location=$_GET['location']; 
    $dept=$_GET['dept']; 
    $jack=$_GET['jack']; 
    $computername=$_GET['computername']; 
    $productkey=$_GET['productkey']; 
    $model=$_GET['model']; 
    $vendor=$_GET['vendor']; 
    $serialnumber=$_GET['serialnumber']; 
    $macaddress=$_GET['macaddress']; 
    $status=$_GET['status']; 
    $starphone=$_GET['starphone']; 
    $intid=$_GET['intid']; 
    $did=$_GET['did']; 
    $software=$_GET['software']; 
    $query='insert into department(
    department, 
    location_id)values(
    "'.$dept.'", 
    "'.$location.'")'; 
    if(valid_query($query)){ 
    $message .= "Enregistrement a ete mis a jour<br>"; 
    }else{ 
      $message .= "Enregistrement n a pas ete mis a jour! S'il vous plait contacter le Departement TI IOS<br>"; 
    } 
    $query='insert into computer(
    computer_name, 
    product_key, 
    model, 
    serial_number, 
    status_id, 
    starphone, 
    inst_id, 
    did, 
    macaddress, 
    software_id, 
    hidden 
    )values(
    "'.$computername.'", 
    "'.$productkey.'", 
    "'.$model.'", 
    "'.$serialnumber.'", 
    "'.$status.'", 
    "'.$starphone.'", 
    "'.$intid.'", 
    "'.$did.'", 
    "'.$macaddress.'", 
    "'.$software.'", 
    0 
    )'; 
    if(valid_query($query)){ 
    $message .= "Enregistrement a ete mis a jour<br>"; 
    }else{ 
      $message .= "Enregistrement n a pas ete mis a jour! S'il vous plait contacter le Departement TI IOS<br>"; 
    } 
    $query="select dept_id from department where department='$dept' and location_id='$location'"; 
    $deptid=select_query($query); 
    $query="select computer_id from computer where computer_name ='$computername'"; 
    $computerid=select_query($query); 
    $query='insert into jack(
    jack_number, 
    dept_id, 
    location_id, 
    computer_id 
    )values(
    "'.$jack.'", 
    "'.$deptid.'", 
    "'.$location.'", 
    "'.$computerid.'")'; 
    if(valid_query($query)){ 
    $message .= "Enregistrement a ete mis a jour<br>"; 
    }else{ 
      $message .= "Enregistrement n a pas ete mis a jour! S'il vous plait contacter le Departement TI IOS<br>"; 
    } 

    $query='insert into computer_vendor(
    computer_id, 
    vendor_id 
    )values(
    "'.$computerid.'", 
    "'.$vendor.'")'; 
    if(valid_query($query)){ 
    $message .= "Enregistrement a ete mis a jour<br>"; 
    }else{ 
      $message .= "Enregistrement n a pas ete mis a jour! S'il vous plait contacter le Departement TI IOS<br>"; 
    } 
    $location=""; 
    $dept=""; 
    $jack=""; 
    $computername=""; 
    $productkey=""; 
    $model=""; 
    $vendor=""; 
    $serialnumber=""; 
    $macaddress=""; 
    $status=""; 
    $starphone=""; 
    $intid=""; 
    $did=""; 
+0

你必须从表中的每一列中删除唯一的约束,那么你可以添加 –

+0

这不是你的代码的问题,这是表的问题。检查您的表上的唯一约束,并检查唯一的主键。确保隐藏是关键的一部分。您的代码在主键复制插入时导致更新也听起来很奇怪。我认为这只是错误。我没有看到UPDATE,DELETE或其他建议插入逻辑的SQL。 – JNevill

+0

我想它与我刚才在上面添加的新图像有关? (独特的钥匙) – Nexis

首先,请确保列计算机名没有被标记为UNIQUE
- 要通过Terminal或cmd或任何shell连接到MySQL,请登录表所在的数据库。 (运行mysql -u <mysql_user> -p <db_name>)然后使用DESCRIBE <table_name>;并与值密钥检查该列是计算机名的值是UNI - 这意味着它被标记为UNIQUE。示例结果:img
二,从列删除UNIQUE约束。
- 要做到这一点(虽然你仍然通过shell连接到MySQL,并且你仍然在同一个数据库中),请使用ALTER TABLE <table_name> DROP INDEX computer_name;。 三,检查是否成功。
- 再次使用DESCRIBE <table_name>;并且如果仍有值UNI密钥列中再次执行步骤2。

祝你好运。

+0

谢谢,它的工作 – Nexis

+0

我很高兴我很有用。如果您需要任何其他信息,请通过[email protected]与我联系。 :) – XTard

+0

好的,非常感谢 – Nexis