从php更新sql数据库时,我面临一种奇怪的行为。我的数据库中有一个表,我正在尝试使用模式更新。该表很简单,仅包含三列。我的页面上有一个触发模式的按钮。该按钮如下:
<a href="#update<?php echo $id;?>" class="btn btn-success btn-xs" data-toggle = "modal" data-target="#update<?php echo $id;?>"></i> Edit</a>
$ id在包含按钮的循环内获取。因此触发了模态,模态代码如下:
<div id = "update<?php echo $id;?>" class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="myModalLabel2">Edit Project Details</h4>
</div>
<div class="modal-body">
<form method = "POST" action = "update_project.php">
<input type="hidden" name="id" value="<?php echo $id;?>">
<label>Project name</label>
<input type="text" name = "name" class="form-control" value = "<?php echo $row['project_name'];?>">
<br/>
<label>Status</label>
<select name = "status" class = "form-control">
<option value = "Active">Active</option>
<option value = "Inactive">Inactive</option>
</select>
<br/>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button name = "update" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
所有内容均正确显示。当我单击保存更改时,将调用update_project.php,其中包含以下代码:
<?php
include('dbcon.php');
$id = $_POST['id'];
$project_name = $_POST['name'];
$status = $_POST['status'];
mysqli_query($con,"UPDATE project SET project_name='$project_name', project_status='$status' where project_id='$id'")
or die(mysqli_error($con));
echo "<script type='text/javascript'>alert('Successfully updated project details!');</script>";
echo "<script>document.location='project.php'</script>";
这是我的问题开始的地方。我在那里没有收到任何错误,但数据库未更新。奇怪的是,仅成功更改了表的最后一个条目,例如,当我将最后一个条目设置为非活动状态时,它被更改,并且当我更改表的另一个条目时,它没有更改,并且将最后一个条目还原活跃起来。
我在其他页面中使用了相同的代码相同的参数,并且可以正常工作,但在这里却不能。有什么事吗为什么如此意外地更新值?
我使用了我在网站上运行的一些代码来报告任何错误,但是没有一个返回任何错误!
作为更新,没有运气,我用<?php echo $id;?>
代替了<?php echo $row['project_id'];?>
。按钮所在的整个代码:
<?php
include 'dbcon.php';
$query=mysqli_query($con,"select * from project ORDER BY project_id ASC")or die(mysqli_error($con));
while ($row=mysqli_fetch_array($query)){
$id=$row['project_id'];
$total=0;
$query1 = mysqli_query($con,"SELECT * FROM budget WHERE project_id='$id'");
while ($row1=mysqli_fetch_array($query1)){
$total=$total+$row1['amount'];}
?>
<tr>
<td colspan="2"><?php echo $row['project_name'];?></td>
<td><?php echo $total;?></td>
<td> </td>
<td> </td>
<td><?php echo $row['project_status'];?></td>
<td style="width:300px">
<a href="#update<?php echo $row['project_id'];?>" class="btn btn-success btn-xs" data-toggle = "modal" data-target="#update<?php echo $row['project_id'];?>"><i class = "fa fa-pencil"></i> Edit</a>
<a href="budget.php?id=<?php echo $id;?>" class="btn btn-success btn-xs" data-target="budget.php?id=<?php echo $id;?>"><i class = "fa fa-pencil"></i> Budget Category</a></td>
</tr>
<?php include 'update_project_modal.php';?>
<?php }?>
经过一些调试后,我得出的结论是$ id值已正确传递给模式(我在模式标题中回显了该值,并且该值与数据库中的值匹配)。问题出在update_project.php中。由于某种原因,$ id值会更改为数据库的最后一个整数。我在消息中回显了它,这是最后一个条目...似乎$ id不会从模式传递到update_project.php页面...