我有xml值类别和子类别,我想将其插入数据库中。这个代码每天都会在服务器检查xml文件上工作,如果有一些更改,如果它有更新mysql数据库。
是可能的我想让2个表相互连接,例如我有几个子类别和一个类别,我想制作一个带有类别的表,第二个表带有子类别和第一个表的id数
<?php
// URL is not real this is for example
$url = 'http://xml.com/category';
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($data);
$con = new PDO("mysql:host=localhost;dbname=main_data;charset=utf8", 'root', '');
foreach ($xml -> m as $row){
$cat = $row->category;
$subCat = $row->sub_category;
$sql = $con->prepare("INSERT INTO cat (category, sub_category) VALUES (:cat, :subCat)");
$sql->bindValue('cat', $cat);
$sql->bindValue('subCat', $subCat);
$sql->execute();
}
xml示例:
<?xml version="1.0" encoding="utf-8"?>
<category>
<m>
<category>Cat 1</category>
<sub_category>SubCat 1</sub_category>
</m>
<m>
<category>Cat 1</category>
<sub_category>SubCat 2</sub_category>
</m>
<m>
<category>Cat 2</category>
<sub_category>SubCat 3</sub_category>
</m>
</category>
答案 0 :(得分:1)
所以首先在子类别表中插入子类别值。只是查询:
INSERT INTO subcat (sub_category) VALUES (:subCat)
这假设subcat表是使用idsubcat定义的,它是一个自动增量整数,以确保每个sub_category的唯一ID号。
如果INSERT完成正常,则插入类别表。再次只是查询:
INSERT INTO cat (category, sub_category)
VALUES (:cat,
(SELECT idsubcat FROM subcat WHERE sub_category = :subCat)
)
答案 1 :(得分:1)
考虑使用PDO&#39; lastInsertId
,假设第一个表中的ID是自动增量字段。
foreach ($xml -> m as $row){
$cat = $row->category;
$subCat = $row->sub_category;
// TABLE 1 INSERT
$sql = $con->prepare("INSERT INTO table1 (category) VALUES (:cat)");
$sql->bindValue('cat', $cat);
$sql->execute();
$catID = $con->lastInsertId();
// TABLE 2 INSERT
$sql = $con->prepare("INSERT INTO table2 (category, sub_category) VALUES (:cat_id, :subCat)");
$sql->bindValue('cat_id', $catID);
$sql->bindValue('subCat', $subCat);
$sql->execute();
}