我的表单无法更新任何数据,请帮助我,它的显示错误“array_keys()期望参数1为数组,null为”第4行“和”为foreach()提供的无效参数“在第5行ramadan .PHP。
这里我想显示来自sql查询的所有数据,并通过另一个查询更新所有数据。
它在我的另一个网页上工作得很好,但在这种情况下,它无法正常工作..
我的表格
<form action="ramadan.php" method="POST">
<?
$result = mysqli_query($dbh,"SELECT * FROM ramadan WHERE id IN (1, 2, 3)");
if(!$result) {
die("Database query failed: " . mysqli_error());
}
while($row = mysqli_fetch_assoc($result)) {
$id=$row['id'];
$ramadan=$row['ramadan'];
$date=$row['date'];
$taraweeh=$row['taraweeh'];
echo '
<tr>
<td><input type="text" name="ramadan['.$id.']" class="form-control" value="'.$ramadan.'"></td>
<td><input type="text" name="date['.$id.']" class="form-control" value="'.$date.'"></td>
<td><input type="text" name="taraweeh['.$id.']" class="form-control" value="'.$taraweeh.'"></td>
</tr>
';}
?>
<input type="submit" class="btn btn-success" name="submit" id="submit" value="Submit">
</form>
ramadan.php
include("../db.php");
global $dbh;
if(isset($_POST['submit'])){
$ids = array_keys($_POST['name']);
foreach ($ids as $id) {
$ramadan = mysqli_real_escape_string($dbh,$_POST['ramadan'][$id]);
$date = mysqli_real_escape_string($dbh,$_POST['date'][$id]);
$taraweeh = mysqli_real_escape_string($dbh,$_POST['taraweeh'][$id]);
$id = mysqli_real_escape_string($dbh,$id);
// update data in mysql database
$update = mysqli_query($dbh,"UPDATE ramadan SET hl='$hl', ramadan='$ramadan', date='$date', taraweeh='$taraweeh' WHERE id = '$id'");
}
// if successfully updated.
}
答案 0 :(得分:1)
你做错了, POST将包含数组 斋月 日期 taraweeh
$_POST['name']
将是一个数组,你有
形式的下一个输入<input type="text" name="name[1]" value="xxx"/>
<input type="text" name="name[2]" value="yyy"/>
<input type="text" name="name[3]" value="zzz"/>
<input type="text" name="name[4]" value="aaa"/>
答案 1 :(得分:0)
$ids = array_keys($_POST['name']);
对于此输入,您需要将表单元素的name="
保留在数组中,如上面的Mr.Zion所述。将名称保留为数组。
<input type="text" name="name[1]" value="xxx"/>
<input type="text" name="name[2]" value="yyy"/>
<input type="text" name="name[3]" value="zzz"/>
<input type="text" name="name[4]" value="aaa"/>
答案 2 :(得分:0)
刚刚在$ids = array_keys($_POST['ramadan']);
添加了$ids = array_keys($_POST['name']);
,问题解决了......