【发布时间】:2016-01-29 02:54:23
【问题描述】:
所以在过去的几天里,我一直在绞尽脑汁在网上搜索,试图弄清楚这一点:我想更新 SQL 中的多行。问题是这个数据库不会更新。我知道将 SQL 查询放入循环不是一个好主意,但这是我能够从表中获取数据的唯一方法。
代码如下:
if(isset($_POST['save'])){
$update_query = "UPDATE grades SET grade_value = '{$_POST['grade']}' WHERE user_id = 1";
$result = mysqli_query($link, $update_query);
while($row = mysqli_fetch_assoc($result)){
foreach($row as $grade){
mysqli_query($link, $update_query);
}
}
}
function editGrades() {
global $link;
$query = "SELECT * FROM grades WHERE user_id = 1";
$result = mysqli_query($link, $query);
if(!$result){
die('Query failed' . mysqli_error());
}
while($row = mysqli_fetch_assoc($result)) {
$gradeValue = $row['grade_value'];
$gradeValue = is_array($gradeValue) ? $gradeValue : array($gradeValue);
foreach($gradeValue as $val){
?>
<td name='grade'><form name="grade" method="post"><input value='<?php if (isset($val)){echo sprintf("%0.2f",$val);} ?>' type='text' class='form-control' name='grade'></td>
<?php }
}
}
<table class="table gradebook">
<tr><th>Student</th><?php displayAssignments(); ?></tr>
<tr><?php displayStudents();?><?php editGrades(); ?></tr>
</table>
<div id="btncontainer">
<br />
<input type="submit" method="post" name="save" action="gradebook.php" class="btn btn-success">Save Changes</button>
</div>
对于mysqli_query 不更新的原因,我最好的猜测是因为有多个$_POST['grade'] 值被提交,而SQL 不知道如何处理它们。我已经检查了表格和输入名称,所有这些都检查得很好。
(我知道user_id 不应该在成绩表中,但我只是想让它工作,稍后会优化 SQL 查询)。
【问题讨论】:
-
我最初在没有循环的情况下尝试了它,认为它是不必要的,然后出于某种原因包含它,认为它会在每次迭代时更新。
标签: php mysql sql database row