在通过php插入xml文件中的记录之前查询mysql数据库
如果我的数据库包含一些 以前的记录,在将新记录从xml文件(包含400条记录)插入到数据库之前,如何查询每个db行 防止重复插入 加载或读取每个xml文件 会议。 下面是Php和mysql代码,它只是读取和上传整个记录在通过php插入xml文件中的记录之前查询mysql数据库,php,mysql,Php,Mysql,如果我的数据库包含一些 以前的记录,在将新记录从xml文件(包含400条记录)插入到数据库之前,如何查询每个db行 防止重复插入 加载或读取每个xml文件 会议。 下面是Php和mysql代码,它只是读取和上传整个记录 <?php $xml=simplexml_load_file("d:\salarydepartment \salary.xml"); $status=count($xml); foreach ( $xml as $sal) { $name=$
<?php
$xml=simplexml_load_file("d:\salarydepartment
\salary.xml");
$status=count($xml);
foreach ( $xml as $sal)
{
$name=$sal->name;
$sex=$sal->sex;
$state=$sal->state;
$country=$sal->country;
$result=mysql_query
("insert into salary
(name,sex,state,country ) values
($name,$sex,$state,$country)",$con)
echo $status." "." Salary Records
successfully stored ! ";
}
?>
更改表格方案
添加唯一约束
这是您的插入查询:
INSERT INTO salary (name,sex,state,country) VALUES (?,?,?,?)
我假设您的表具有以下模式
salary (name, sex, state, country)
您不希望记录被复制。因此,您必须有某种方法来检查记录是否已插入,这意味着一列(或其组合)必须是唯一的。我猜您的xml文件不包含每个员工的唯一标识符
我们应该考虑添加一个约束来收集足够的信息,以便冲突的数量少。
ALTER TABLE salary ADD UNIQUE KEY (name,sex,state,country)
//This sql statement is intended for MySQL version 5.1 please check your's
在这种限制下,唯一允许的复制品是同一国家、同一州、同一性别、同名的人
添加主键
现在,这不是一个好的解决方案,所以我根据以下假设提出了一个更好的解决方案
- 员工有一个唯一的ID,可以在xml中找到它
好的,现在它很简单,但很乏味
- 我们需要在表中添加一列
ALTER table salary add column…
- 我们需要用每个员工的唯一ID填充所有元组
- 最后,我们添加了重要的约束
ALTER TABLE salary add主键…
该表现在已针对快速搜索进行了优化不再使用mysql_*函数。它们已被弃用。请使用mysqli_*…也许您希望在多个列上使用唯一索引,并使用INSERT IGNORE…?薪资表的主键是什么?在插入之前,您只需做一个SELECT语句,以检查是否已经有相应的记录。您可以使用SELECT查询,在插入之前使用where条件DEEPU、Cbroe、kewlashu和OlivierH如何完成所有数据?请提供详细样品。