【问题标题】:array_keys() expects parameter 1 to be array, null givenarray_keys() 期望参数 1 是数组,给定 null
【发布时间】:2015-08-25 21:34:09
【问题描述】:

我的表单无法更新任何数据,请帮帮我,它在第 4 行的“array_keys() 期望参数 1 是数组,给定 null”和第 5 行的“为 foreach() 提供的参数无效”上的显示错误在斋月.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>

斋月.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. 
}

【问题讨论】:

标签: php


【解决方案1】:

你做错了, POST 将包含数组 斋月 日期 塔拉威

$_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"/>

【讨论】:

    【解决方案2】:
    $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"/>
    

    【讨论】:

      【解决方案3】:

      刚刚在$ids = array_keys($_POST['name']); 处添加了$ids = array_keys($_POST['ramadan']); 并解决了问题...

      【讨论】:

        猜你喜欢
        • 2014-06-28
        • 1970-01-01
        • 2021-08-15
        • 2017-05-03
        • 1970-01-01
        • 2019-06-01
        • 1970-01-01
        • 2018-01-05
        • 1970-01-01
        相关资源
        最近更新 更多