希望在这里得到一些帮助。我有一个大的 xml 文件(在上面的代码中称为 xml-file.xml)。我在上面的代码中遇到的问题是将所有内容写入数据库非常慢。我认为它很慢的原因是因为该部分循环播放电影并仅将电影名称以逗号分隔的字符串写入表中。我的问题 - 有没有更有效的方法将电影名称转换为逗号分隔的字符串,然后写入表格?提前感谢您的帮助!
XML 标记:
<users>
<user>
<id>7280462</id>
<name>John</name>
<movies>
<name>
<![CDATA[Jack]]>
</name>
<description>
<![CDATA[comedy]]>
</description>
<name>
<![CDATA[Superman]]>
</name>
<description>
<![CDATA[action]]>
</description>
<name>
<![CDATA[Ace Venture]]>
</name>
<description>
<![CDATA[comedy]]>
</description>
<name>
<![CDATA[Major League]]>
</name>
<description>
<![CDATA[sports]]>
</description>
</movies>
</user>
</users>
我的PHP代码:
$file = 'xml-file.xml';
$users = simplexml_load_file($file);
$num_rows = count($users);
for ($j=0; $j < $num_rows; $j++) {
$userid = $users->user[$j]->id;
$name = $users->user[$j]->name;
//update table with userid and name
$db->exec("INSERT INTO table (userid, name) VALUES ('$userid', '$name')");
//loop through movies and write only movie name to table as comma separated string
foreach ($users->user$j]->movies as $element) {
foreach($element as $key => $val) {
if ($key != 'description') {
//echo "{$key}: {$val}";
$title = trim($val).',';
$db->exec("UPDATE table set movies = concat(movies,'','$title') where userid = '$userid'");
}
}
}
}