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