Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在数据库中插入与另一行相同的信息?_Php_Mysql_Database_Duplicates - Fatal编程技术网

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

Php 如何在数据库中插入与另一行相同的信息?,php,mysql,database,duplicates,Php,Mysql,Database,Duplicates,比如,我有一行包含这个。隐藏列确定它在研究(0)中是否可见(1) 我想插入一个新行,该行的信息与hidden number=1的行相似(尤其是名称相同)。但是现在,如果我插入一台计算机的相同信息,而该计算机具有一个隐藏编号=1(如IT Melanie),它只会“刷新”已经存在的行,而不会创建一个新的行!有没有可能创建一个同名的新行(比如It Melanie),但可能会有一些不同的信息插入现有行而不进行此更新?这就像我们在数据库中复制了一行,但是使用了所有相同的信息 我在这里找到的唯一一个想法是在

比如,我有一行包含这个。隐藏列确定它在研究(0)中是否可见(1)

我想插入一个新行,该行的信息与
hidden number=1
的行相似(尤其是名称相同)。但是现在,如果我插入一台计算机的相同信息,而该计算机具有一个
隐藏编号=1
(如
IT Melanie
),它只会“刷新”已经存在的行,而不会创建一个新的行!有没有可能创建一个同名的新行(比如
It Melanie
),但可能会有一些不同的信息插入现有行而不进行此更新?这就像我们在数据库中复制了一行,但是使用了所有相同的信息

我在这里找到的唯一一个想法是在javascript中重复一行,这不是我想要的。我尝试插入超过一次的信息,以使两行相似,但未成功,仅更新数据库中已存在的行

概述:我想插入一台与数据库中已有计算机同名的新计算机,但旧计算机将有一个
隐藏编号=1
,而新计算机
=0

问题:我们是否可以在不编辑旧行的情况下,将两行的计算机名称相同

例如:

旧行:
Computer\u name
=
It\u melanie
产品编号
=
xxxxx-xxxxxx-xxxxx-xxxxxx-xxxxx
[...]
hidden
=
1

新行:
Computer\u name
=
It\u melanie
产品编号
=
xxxxx-xxxxxx-xxxxx-xxxxxx-xxxxx
[...]
hidden
=
0

我的代码

    //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="";
//获取表单中的信息并将其插入数据库
$location=$_GET['location'];
$dept=$_GET['dept'];
$jack=$_GET['jack'];
$computername=$_GET['computername'];
$productkey=$\u获取['productkey'];
$model=$_GET['model'];
$vendor=$_GET['vendor'];
$serialnumber=$_GET['serialnumber'];
$macaddress=$\u GET['macaddress'];
$status=$_GET['status'];
$starphone=$_GET['starphone'];
$intid=$_GET['intid'];
$did=$_GET['did'];
$software=$_GET['software'];
$query='insert到部门(
部门
位置(id)值(
“.$部门”,
“.$location.”;
if(有效的查询($query)){
$message.=“登记日期
”; }否则{ $message.=“注册一个月!您可以编辑一个部门联系人
”; } $query='insert到计算机中( 计算机名, 产品密钥, 模型 序列号, 身份证, 星电话, 研究所, 做 macaddress, 软件id, 隐藏的 )价值观( “.$computername.”, “.$productkey.”, “.$model.”, “.$serialnumber.”, “.$status.”, “.$starphone.”, “.$intid.”, “.$did.”, “.$macaddress.”, “.$软件。”, 0 )'; if(有效的查询($query)){ $message.=“登记日期
”; }否则{ $message.=“注册一个月!您可以编辑一个部门联系人
”; } $query=“从部门中选择部门标识,其中部门标识为“$dept”,位置标识为“$location”; $deptid=选择查询($query); $query=“从计算机中选择计算机id,其中计算机名=”$computername'; $computerid=选择查询($query); $query='insert-into-jack( jack_号码, 部门id, 地址(id), 计算机识别码 )价值观( “.$jack.”, “.$deptid.”, “.$location.”, “.$computerid.””; if(有效的查询($query)){ $message.=“登记日期
”; }否则{ $message.=“注册一个月!您可以编辑一个部门联系人
”; } $query='insert到计算机\u供应商( 计算机id, 供应商id )价值观( “.$computerid.”, “.$vendor.”; if(有效的查询($query)){ $message.=“登记日期
”; }否则{ $message.=“注册一个月!您可以编辑一个部门联系人
”; } $location=”“; $dept=“”; $jack=“”; $computername=“”; $productkey=“”; $model=“”; $vendor=”“; $serialnumber=“”; $macaddress=“”; $status=“”; $starphone=“”; $intid=“”; $did=“”;
首先,确保列计算机名称未标记为唯一的
-要通过终端或cmd或任何shell连接到MySQL,请登录表所在的数据库。(运行
mysql-u-p
)然后使用
描述
和在带有值的列中,Key check is computer_name的值为UNI-这意味着它被标记为唯一。示例结果:
其次,从列中删除唯一约束。
-要做到这一点(当您仍然通过shell连接到MySQL,并且仍然在同一个数据库中时),请使用
altertabledropindex computer\u name。
第三,检查您是否成功。

-再次使用
描述如果键列中仍然有值UNI,请再次执行步骤2。

祝您好运。

您必须从表中的每一列中删除唯一约束,然后您可以添加这不是代码的问题,而是表的问题。检查表上的唯一约束,并检查唯一主键。确保
隐藏
是密钥的一部分。您的代码导致主键重复插入的更新,这听起来也很奇怪。我认为这只是一个错误。我看不到任何更新、删除或其他SQL会建议upsert逻辑。我想这与我刚才添加的新映像有关?(独特的钥匙)我很高兴我是有用的。联系我ickomcdevill@gmail.com如果你还需要什么