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

标签 php mysql database duplicates

就像,我有一行包含这个 information 。隐藏列决定它在研究中是否可见 (0) 或不可见 (1)。

我想插入一个新行,其中包含与隐藏数字=1的行类似的信息(尤其是相同的名称)。但现在,如果我插入具有 hidden number = 1 的计算机的相同信息(例如 IT-Melanie),它只会“刷新”已有的行,没有创建新的!是否有可能创建一个具有相同名称的新行(例如 IT-Melanie),但可能会插入一些不同的其他信息,而不更新现有的行?这就像我们在数据库中复制一行,但信息相同。

我在这里发现的唯一的想法是在 javascript 中重复一行,但这不是我想要的。我尝试插入多次信息以使两行相似但没有成功,仅更新数据库中已存在的行!

回顾:我想插入一台与数据库中已存在的计算机同名的新计算机,但旧计算机将具有隐藏数字 = 1,而新计算机= 0.

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

示例:

旧行:Computer_name = It_melanie 产品编号= xxxxx-xxxxxx-xxxxx-xxxxxx-xxxxx [...] 隐藏=1

新行:Computer_name = It_melanie 产品编号= xxxxx-xxxxxx-xxxxx-xxxxxx-xxxxx [...] 隐藏=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="";

最佳答案

首先,确保列computer_name 未标记为UNIQUE
- 要通过终端、cmd 或任何 shell 连接到 MySQL,请登录表所在的数据库。 (运行 mysql -u <mysql_user> -p <db_name> )然后使用 DESCRIBE <table_name>;在值为 Key 的列中,检查 computer_name 的值为 UNI - 这意味着它被标记为 UNIQUE。结果示例:img
其次,从列中删除UNIQUE约束
- 为此(当您仍然通过 shell 连接到 MySQL 并且仍然在同一个数据库中时)使用 ALTER TABLE <table_name> DROP INDEX computer_name; 。 第三,检查你是否成功。
-再次使用DESCRIBE <table_name>;如果Key列中仍有值UNI,请再次执行步骤2。

祝你好运。

关于php - 如何向数据库中插入一些与另一行相同的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43590544/

相关文章:

php - 使用 Facebook 的 PHP SDK v4 创建用户拥有的 Open Graph 对象

mysql - 在子查询中按列对最终结果进行排序

php - 文件导出脚本在大输出时挂起

mysql - 无法检测 where 子句中的整数值

php - 如何将textarea保存到php文件

php - AJAX 操作期间 PHP session 中的类对象重置?

php - App\Profile::jenis 必须返回关系实例,但返回了 "null"。是否使用了 "return"关键字?

php - 更新两个 mysql 列

database - 是否可以通过 R(RMySQL) 向数据库表添加索引

java - 使用java优化从数据库下载数据