【问题标题】:My for each loop is missing the first data set in my array我的 for each 循环缺少数组中的第一个数据集
【发布时间】:2020-10-03 13:43:03
【问题描述】:

我正在从表单发送此数据集。每个数据集完全相同,但只有 event[1] 和 event[2] 正在插入(我使用不同的数据集验证了这一点)。无论我添加多少个数组 event[0] 数据从未插入到我的数据库中,这都保持不变。

event[0][equipTypeUpdate]: 2
event[0][productTypeUpdate]: 33
event[0][serialNumUpdate]: 123456
event[0][assestNumUpdate]: 123456
event[0][payNumUpdate]: 1234596
event[0][warrantyEndDate]: 2020-10-05
event[0][statusUpdate]: No
event[0][installedInRoom]: No
event[0]siteNameUpdate]: 9
event[0][roomNameUpdate]: 1
event[1][equipTypeUpdate]: 2
event[1][productTypeUpdate]: 33
event[1][serialNumUpdate]: 123456
event[1][assestNumUpdate]: 123456
event[1][payNumUpdate]: 123156
event[1][warrantyEndDate]: 2020-10-05
event[1][statusUpdate]: No
event[1][installedInRoom]: No
event[1][siteNameUpdate]: 9
event[1][roomNameUpdate]: 1
event[2][equipTypeUpdate]: 2
event[2][productTypeUpdate]: 33
event[2][serialNumUpdate]: 123456
event[2][assestNumUpdate]: 123456
event[2][payNumUpdate]: 123156
event[2][warrantyEndDate]: 2020-10-05
event[2][statusUpdate]: No
event[2][installedInRoom]: No
event[2][siteNameUpdate]: 9
event[2][roomNameUpdate]: 1


这是我的 foreach 循环,循环遍历数组以将它们保存为变量以插入数据库。我认为这是一个错误的 } 这是问题所在,但似乎无法弄清楚。 任何帮助感谢感谢

if(is_post_request()) {
  if (isset($_POST["event"])) {
              $events = $_POST["event"];
  }
  foreach ($events as $event) {
    // code...
  $equipIdValue = $event['equipTypeUpdate'];
  $prodValue= $event['productTypeUpdate'];
  $serialValue= $event['serialNumUpdate'];
  $assetValue = $event['assestNumUpdate'];
  $paymentValue = $event['payNumUpdate'];
  $warrantyValue = $event["warrantyEndDate"];
  $installedValue = $event["installedInRoom"];
  $buildValue = $event["siteNameUpdate"];
  $statusValue = $event["statusUpdate"];
  $roomValue = $event["roomNameUpdate"];

  $timeStamWar = strtotime($warrantyValue);
  $siteValue = $_SESSION['location'];
  create_inventory($equipIdValue ,$prodValue ,$siteValue, $buildValue, $statusValue , $serialValue, $roomValue, $installedValue, $assetValue, $paymentValue, $timeStamWar);
}
 echo "New record created successfully";
 $lastInsertId = mysqli_insert_id($db);
redirect_to("../Pages/my_site_stock.php?id=$timeStamWar");

}
else{
      // INSERT FAILED
      echo mysqli_error($db);
      db_disconnect($db);
      exit;
    }
function create_inventory($equipIdValue ,$prodValue ,$siteValue, $buildValue, $statusValue , $serialValue, $roomValue, $installedValue, $assetValue, $paymentValue, $timeStamWar){
// SQl statement to input form data in SQL table
    global $db;
    $sqllogin = "INSERT INTO av_inventory (equipment, product, site, current_location, status, serial, stored_room, installed, asset_tag, po_number, warranty) VALUES (? ,? ,? ,? ,? ,?, ?, ?, ?, ?, ?)";
    $stmt = mysqli_stmt_init($db);
    if (!mysqli_stmt_prepare($stmt, $sqllogin)) {
        header("Location: ../Pages/update_inventory.php?error=sqlerror2");
         exit();
         }
        // otherwise go ahead
        else {
        mysqli_stmt_bind_param($stmt, "sssssssssss", $equipIdValue , $prodValue, $siteValue, $buildValue, $statusValue , $serialValue, $roomValue, $installedValue, $assetValue, $paymentValue, $timeStamWar);
               mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_get_result($stmt);}
  }

编辑:

根据 cmets 的建议,我对 $events 和 $event 做了一个 vardump。 他们似乎没有得到事件 [0] 数据,这很奇怪,成为网络部分下的 chrome 开发人员工具显示我的表单发布数据发送

event[0][equipTypeUpdate]: 1
event[0][productTypeUpdate]: 2
event[0][serialNumUpdate]: 123456
event[0][assestNumUpdate]: 123456
event[0][payNumUpdate]: 1234596
event[0][warrantyEndDate]: 2020-10-12
event[0][statusUpdate]: No
event[0][installedInRoom]: No
event[0]siteNameUpdate]: 9
event[0][roomNameUpdate]: 3

编辑 2.0

A few of my variables were single quotes and some were doubles.
Issue is fixed thanks for the help

【问题讨论】:

    标签: php html for-loop


    【解决方案1】:

    你需要在这里做的,只是调试每一步。在您的foreach ($events as $event) { 转储出$events 的值并确保它们都在那里之前。

    如果它们被转储出所有进入create_inventory 函数的值。

    您的问题没有一个正确答案,因为可能有多个地方没有数据输入,但很可能您的帖子数据不包含第一个数组

    【讨论】:

    • 非常感谢这似乎是问题所在。 $events 变量缺少所有 event[0] 数据,这很奇怪,因为 chrome 开发人员工具显示它正在发送。
    • 我的一些变量是单引号,有些是双引号。问题已解决,感谢您的帮助
    • 很高兴你把它整理好了!
    猜你喜欢
    • 1970-01-01
    • 2019-05-30
    • 1970-01-01
    • 2020-02-22
    • 2013-10-07
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多