2017-04-23 59 views
-1

如果有人能够帮我解决将xml文件中的数据插入数据库的问题,我将不胜感激。我想防止在刷新页面后在数据库中添加重复行。这里是我的代码:加载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(); 
    } 

    } 

} 
+0

运行插入查询Downvoted无法正确格式化您的代码。 –

回答

0

里面的for循环,而之前插入数据,运行查询,以检查是否值在提交之前就存在,然后运行if语句,以防止如果行存在

for loop 
$query = 'SELECT `Author`,`Name` from `table` where `Author` = $author AND `Name` = $name'; 

if($query != null){ 
    insert new row 
} 

end for loop 
+0

嗨,谢谢你的建议!我已经尝试过,但我仍然得到重复的结果。你认为这可能是我的数据库中的列,也许我需要将它们设置为UNIQUE键? –

+0

aa它很好,它现在工作!百万分感谢:) :) –

+0

最好为您的数据库表设置一个唯一的键,但它不会对您的情况很重要,如果帮助其他人正确的话,请将结果标记为正确=) –