array_keys()期望参数1为数组,给定null

时间:2015-06-10 14:40:00

标签: php

我的表单无法更新任何数据,请帮助我,它的显示错误“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. 
}

3 个答案:

答案 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']);,问题解决了......