我正在从xml文件上传数据。 所有行都在我的本地服务器上正常上传。但是只有一些行插入服务器的数据库中。
这是我的上传代码
/*--upload data to database--*/
if(isset($_POST)&&!empty($_POST)){
@$token=$_SESSION['token'];
// echo 'session'.$token.'<br>';
//echo 'form'.$_POST['token'];
unset($_SESSION['token']);
if($token&&$_POST['token']==$token){
$lotterydetails=array(
$_POST['serialnumber'],
$_POST['lotteryname'],
$_POST['date'],
$_POST['drawnumber'],
$_POST['drawvenew'],
$_POST['approvedby'],
$_POST['approverdesig'],
$_POST['approveroffice']
);
try
{
$connect=lottery_db_connect();
$connect->beginTransaction();
/*--check for duplicate entry if found rollbak the transaction--*/
$duplicate=$connect->prepare("SELECT * FROM `daily_draw_details` WHERE `draw_date`=?");
$duplicate->execute(array($_POST['date']));
if($duplicate->rowCount()){
$connect->rollBack();
$error="Duplicate entry found!! File is already uploaded";
}else{
/*--insert basic data--*/
$first=$connect->prepare("INSERT INTO `daily_draw_details`(`draw_serial_number`, `draw_lottery_name`, `draw_date`, `draw_number`, `draw_venuew`, `draw_approved_by`, `draw_approver_designation`, `draw_approved_office`) VALUES (?,?,?,?,?,?,?,?)");
$first->execute($lotterydetails);
$id=$connect->lastInsertId();
/*--insert prize details--*/
$second=$connect->prepare("INSERT INTO `draw_prize_list`(`draw_id`, `prize_no`, `prize_amount`, `prize_consolation`) VALUES (?,?,?,?)");
$amount=$_POST['prizeamount'];
$conslation=$_POST['conslation'];
/*--insert series and digit details--*/
$third=$connect->prepare("INSERT INTO `draw_series_details`(`prize_id`, `prize_series_name`, `prize_lottery_number`, `prize_lottery_district`) VALUES (?,?,?,?)");
foreach($_POST['prizeno'] as $key=>$prize){
$second->execute(array($id,$prize,$amount[$key],$conslation[$key]));
$prizeid=$connect->lastInsertId();
foreach($_POST[$prize.'seriesname'] as $key=>$series){
$check=$connect->prepare("
SELECT *
FROM `draw_series_details`
WHERE `prize_series_name`=?
AND `prize_lottery_number`=?");
$check->execute(array($series,$_POST[$prize.'digits'][$key]));
if($check->rowCount()){
}else{
$third->execute(array($prizeid,$series,$_POST[$prize.'digits'][$key],$_POST[$prize.'district'][$key]));
}
}
}
$connect->commit();
check_for_saved_lottery($_POST['date']);
pushNotificationToUsers($_POST['lotteryname'],$_POST['drawnumber']);
$success="Lottery results uploaded successfully";
}
}catch(Exception $e){
// $connect->rollBack();
//$e->getMessage();
$error="An error occured try again";
}
}else{
$error="Token mismatch error is happen";
}
}
/*--end of upload--*/
例如。如果我从XML上传60行,它只插入38行。但是在localhost中,所有行都已成功上传。
更新 - 数据库结构
draw_series_details
_________________________________________
|Column |Type |
-----------------------------------------
|id |int(11) |
|prize_id |varchar(50) |
|prize_series_name |varchar(20) |
|prize_lottery_number |varchar(100) |
|prize_lottery_district |varchar(200) |
-----------------------------------------
draw_prize_list
_________________________________
|Column |Type |
---------------------------------
|id |int(11) |
|draw_id |varchar(10) |
|prize_no |varchar(20) |
|prize_amount |varchar(200) |
|prize_consolation|varchar(10) |
---------------------------------
daily_draw_details
___________________________________________
|Column |Type |
-------------------------------------------
|id |int(11) |
|draw_serial_number |varchar(50) |
|draw_lottery_name |varchar(200) |
|draw_date |varchar(50) |
|draw_number |varchar(50) |
|draw_venuew |varchar(500) |
|draw_approved_by |varchar(200) |
|draw_approver_designation |varchar(200) |
|draw_approved_office |varchar(500) |
-------------------------------------------
UPDATE-上传xml文件并在html表格中显示,最后上传到数据库
//get data from xml
$xml=simplexml_load_file($_FILES['result']['tmp_name']);
<!--table generation starts here-->
<?php if(isset($xml)&&!empty($xml))
{?>
<div class="form-group">
<form action="profile.php" method="post">
<input type="hidden" name="token" value="<?php echo $token; ?>">
<input type="hidden" name="serialnumber" value="<?php echo $xml->drawserialnumber; ?>">
<input type="hidden" name="lotteryname" value="<?php echo $xml->lotteryname; ?>">
<input type="hidden" name="date" value="<?php echo $xml->drawdate; ?>">
<input type="hidden" name="drawnumber" value="<?php echo $xml->shortname.'-'.$xml->drawnumber; ?>">
<input type="hidden" name="drawvenew" value="<?php echo $xml->drawvenew; ?>">
<input type="hidden" name="approvedby" value="<?php echo $xml->approvedby; ?>">
<input type="hidden" name="approverdesig" value="<?php echo $xml->approverdesig; ?>">
<input type="hidden" name="approveroffice" value="<?php echo $xml->approveroffice; ?>">
<?php
echo '<table cellspacing="0" cellpadding="0" border="1" class="table">
<tr>
<th>Prize No</th>
<th>Amount</th>
<th>Consolation</th>
<th>Series Name</th>
<th>Lottery Number</th>
<th>District</th>
</tr>';
foreach($xml->prizes as $prize){
foreach($prize->prizedetails as $details){
?>
<tr>
<td rowspan="<?php echo sizeof($details->prizeticket); ?>"><?php echo $details->prizeno; ?><input type="hidden" name="prizeno[]" value="<?php echo $details->prizeno; ?>"></td>
<td rowspan="<?php echo sizeof($details->prizeticket); ?>" ><?php echo $details->prizedesc; ?><input type="hidden" name="prizeamount[]" value="<?php echo $details->prizedesc; ?>"></td>
<td rowspan="<?php echo sizeof($details->prizeticket); ?>" ><?php echo $details->conslation; ?><input type="hidden" name="conslation[]" value="<?php echo $details->conslation; ?>"></td>
<?php
$i=1;foreach ($details->prizeticket as $tickets){
?>
<td><?php echo $tickets->seriesname; ?>
<input type="hidden" name="<?php echo $details->prizeno; ?>seriesname[]" value="<?php echo $tickets->seriesname; ?>">
</td>
<td><?php echo $tickets->digit; ?>
<input type="hidden" name="<?php echo $details->prizeno; ?>digits[]" value="<?php echo $tickets->digit; ?>">
</td>
<td><?php echo $tickets->district; ?>
<input type="hidden" name="<?php echo $details->prizeno; ?>district[]" value="<?php echo $tickets->district; ?>">
</td>
</tr>
<?php $i++;
}
}
}
?>
<input type="submit" value="Verfiy and upload to application" class="btn btn-primary" />
<br><br>
</form><?php }?>
这里是代码上面的工作流程。
1.User上传xml文件
2.Parse并将数据从xml显示到html表。
3.最后,当用户按下按钮verify and upload to Application
时,数据将被插入数据库。
注意
form
标记与html表一起填充。
使用xml运行上面的php文件以查看输出。