在通过php从xml文件插入记录之前查询mysql数据库

时间:2013-11-28 10:19:38

标签: php mysql

如果我的数据库包含一些 以前的记录,如何在将新记录从我的xml文件(包含400条记录)插入数据库之前查询每个数据库行 防止重复插入 每个xml文件加载或读取 会话。  以下是Php&只读取并上传整个记录的mysql代码。

<?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 ! ";
    }
?>

1 个答案:

答案 0 :(得分:0)

更改表格方案

添加唯一约束

这是您的插入查询:

INSERT INTO salary (name,sex,state,country) VALUES (?,?,?,?)

我将假设您的表具有以下架构

salary (name, sex, state, country)

您不希望重复记录。因此,您必须有一些检查记录是否已插入的方法,这意味着一列(或其组合)必须是唯一的。我的猜测是你的xml文件每unique identifiers个不包含任何employee

然后我们应该考虑在表中添加一个约束来收集足够的信息,以便碰撞的数量很少。

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 PRIMARY KEY...

该表现已针对快速搜索进行了优化