[英]PHP read XML and write in Database
我有一個XML文件,並且在檢查它們之后需要數據庫中的數據。 因此,我將數據顯示在表中,然后嘗試將數據寫入數據庫中。 但是用我的代碼,我只能從數據庫中的xml中獲取第一組數據。 但每個xml中至少有20個或更多。 如何將所有數據寫入數據庫?
使用此代碼,我顯示來自xml的數據
<form action="insert.php" method="post" />
<table id="Wagen">
<thead>
<tr>
<th>Typ</th>
<th>Kennzeichen</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="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']))
{
$sql =
"INSERT INTO myTable
(fahrzeug,
kennzeichen,
fahrer
)
VALUES
('".mysql_real_escape_string(trim($_POST['name']))."',
'".mysql_real_escape_string(trim($_POST['kfz-nr']))."',
'".mysql_real_escape_string(trim($_POST['fahrer']))."');
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
mysql_query("SET NAMES 'utf8'");
}
?>
我希望有一個人可以幫助我。 :)
在foreach循環中,您編寫了多組具有不同值的隱藏輸入,但是所有隱藏輸入都具有相同的名稱,因此,在提交了僅一個輸入后,它們就會通過POST發送。 因此,在數據庫代碼中,只需添加傳遞的單個輸入。
總之,您需要為每個隱藏的輸入使用不同的名稱,並在數據庫插入中使用一個循環來遍歷所有已發送的結果。
一種方法是在輸入名稱后添加[],使其返回數組。
<input type="hidden" name="name[]" value="<?php echo $cars->typ; ?>">
<input type="hidden" name="kfz-nr[]" value="<?php echo $cars->plate; ?>">
<input type="hidden" name="fahrer[]" value="<?php echo $cars->driver; ?>">
會導致類似:
$_POST[kfz-nr][0]=="ABC123";
$_POST[kfz-nr][1]=="KLM901";
$_POST[kfz-nr][2]=="RGB255";
等等。 然后在插入方法中執行以下操作:
if (isset($_POST['senden']))
{
$count = count($_POST['name']);
for($i=0;$i<$count;$i++){
$sql =
"INSERT INTO myTable
(fahrzeug,
kennzeichen,
fahrer
)
VALUES
('".mysql_real_escape_string(trim($_POST['name'][$i]))."',
'".mysql_real_escape_string(trim($_POST['kfz-nr'][$i]))."',
'".mysql_real_escape_string(trim($_POST['fahrer'][$i]))."');
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
mysql_query("SET NAMES 'utf8'");
}
}
$values = array();
for( $i=0; $i < count( $_POST['names'] ); $i++ ){
$values[] = "(" .
"\"" . mysql_real_escape_string(trim($_POST['name'][$i]).""\",".
"\"" . mysql_real_escape_string(trim($_POST['kfz-nr'][$i])."\",".
"\"" . mysql_real_escape_string(trim($_POST['fahrer'][$i])."\"".
")";
}
$sql = "INSERT INTO myTable (fahrzeug, kennzeichen, fahrer ) VALUES " . implode($values);
mysql_query($sql) OR die("<pre><br>" . $sql . "</pre><br>".mysql_error());
mysql_query("SET NAMES 'utf8'");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.