我讀取並顯示了XML的內容,並且一切正常。比我把XML中的數據放到數據庫中。問題是除了元素'bericht'之外的所有行都是正確的。 'bericht'的文本與行中的其他文本不再匹配。換句話說,例如第5行的'bericht'在第9行寫入的數據庫中,第9行的'bericht'在第17行或任何地方。其他元素仍然是他們應該在的地方。 XML使用UTF-8編碼,不含BOM。在'bericht'的一些文本中有幾個wordwraps,我想還有一些其他的字符會搞亂mysql中的數據?將XML導入到Mysql錯誤行中的一個元素
有了這個代碼,我讀取XML到表:
<form action="insert.php" method="post" />
<table id="Wagen">
<thead>
<tr>
<th>Typ</th>
<th>Kennzeichen</th>
<th>Bericht</th>
<th>Fahrer</th>
</tr>
</thead>
<tbody>
<?php
$url = ('./cars.xml');
$xml = simplexml_load_file(urlencode($url), null, true);
foreach ($xml->car as $cars) :?>
<tr>
<td><input type="hidden" name="name[]" value="<?php echo $cars->typ; ?>"><?php echo $cars->typ; ?></td>
<td><input type="hidden" name="kfz-nr[]" value="<?php echo $cars->plate; ?>"><?php echo $cars->plate; ?></td>
<td><input type="hidden" name="bericht[]" value="<?php echo $cars->message; ?>"><?php echo $cars->message; ?></td>
<td><input type="hidden" name="fahrer[]" value="<?php echo $cars->driver; ?>"><?php echo $cars->driver; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<input type="submit" name="senden" value="XML speichern" />
</form>
,並有了這個,我把它寫到數據庫:
<?php
error_reporting(E_ALL);
$MYSQL_HOST = 'localhost';
$MYSQL_USER = 'username';
$MYSQL_PASS = 'password';
$MYSQL_DATA = 'database';
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
if (isset($_POST['senden']))
{
$count = count($_POST['name']);
for($i=0;$i<$count;$i++){
$sql =
"INSERT INTO myTable
(fahrzeug,
kennzeichen,
bericht,
fahrer
)
VALUES
('".mysql_real_escape_string(trim($_POST['name']))."',
'".mysql_real_escape_string(trim($_POST['kfz-nr']))."',
'".mysql_real_escape_string(trim($_POST['bericht']))."',
'".mysql_real_escape_string(trim($_POST['fahrer']))."');
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
mysql_query("SET NAMES 'utf8'");
}
}
echo "Daten eingetragen";
?>
我也試過已經去掉一些specialChars中像等。 :
<td><input type="hidden" name="bericht[]" value="<?php echo str_replace(["\n", "\r", "\r\n", "\n\n", "\x20-\x7f", "\0", "\t", "\x0B"], '', $cars->message) ; ?>"><?php echo str_replace(["\n", "\r", "\r\n", "\n\n", "\x20-\x7f", "\0", "\t", "\x0B"], '', $cars->message); ?></td>
但我仍然沒有正確的'bericht'它所屬的行。 :(
這裏是XML的一小部分,我希望這已經足夠了,我不知道它出錯的地方,但是整個XML大概有30MB。寫了錯誤的排。在這種情況下可能會從海科H.了「bericht」將被寫入弗蘭克·P的排
<?xml version="1.0" encoding="UTF-8"?>
<car>
<cars>
<typ>personal</typ>
<plate>4528-58</plate>
<message>gestern wurde genau 2mal etwas entnommen.</message>
<driver>Heiko H.</driver>
</cars>
<cars>
<typ>personal</typ>
<plate>4528-59</plate>
<message>Die Fahrt war kurz. einige Sachen wurdne mitgebracht!
Inhalt:
2 Flaschen Öl
Schraubendreher
Etui aus Metall mit Schlüssel
Tasche aus Polyester, Polyurethan und nickelfreiem Metall.</message>
<driver>Frank P.</driver>
</cars>
</car>
我們可以看到一個XML文件的片段的可重現的例子嗎? – Parfait
我編輯了我的psot並添加了一點XML。 – speeddrive