加载xml文件时停止插入重复的行

时间:2017-04-23 16:39:46

标签: php mysql xml pdo

如果有人能帮我解决将xml文件中的数据插入数据库的问题,我将不胜感激。我想在刷新页面后阻止在我的数据库中添加重复的行。这是我的代码:

public function getAll() {

  $xml = new DOMDocument();
  $xml->load('newXMLDocument.xml');

  $xmldata = $xml->getElementsByTagName('book');
  $xmlcount = $xmldata->length;

  for($i=0; $i< $xmlcount; $i++){

    $author = $xmldata->item($i)->getElementsByTagName('author')->item(0)->childNodes->item(0)->nodeValue;
    $name = $xmldata->item($i)->getElementsByTagName('name')->item(0)->childNodes->item(0)->nodeValue;

    try {
      $statement = self::$db->prepare("INSERT INTO `books`( `Author`, `Name`) values( ?, ?) ");
      $statement->bindParam(1, $id);
      $statement->bindParam(2, $author);
      $statement->bindParam(3, $name);

      $statement->execute(array(
        $author,
        $name
      ));


    } catch (PDOException $e) {
      echo $e->getMessage();
    }

  }

}

1 个答案:

答案 0 :(得分:0)

在for循环中,在插入数据之前,运行查询以在提交之前检查值是否存在,然后运行if语句以防止在存在行时插入查询

set