Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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插入xml文件中的记录之前查询mysql数据库_Php_Mysql - Fatal编程技术网

在通过php插入xml文件中的记录之前查询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=$

如果我的数据库包含一些 以前的记录,在将新记录从xml文件(包含400条记录)插入到数据库之前,如何查询每个db行 防止重复插入 加载或读取每个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 ! ";
    }
?>

更改表格方案 添加唯一约束 这是您的插入查询:

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如何完成所有数据?请提供详细样品。