如果空 pdo php,则数组在 php 中执行

Array execute in php if empty pdo php

foreach($parentinfojson as $value) {
    if (!empty($parentinfojson )) {
        $stmt2 = $dbh -> prepare("INSERT INTO parentinfo (last_name,first_name,status) VALUES (:lastname,:firstname,:status)");
        $stmt2_ = $stmt2 -> execute(array(':firstname' => $value['firstname'], ':lastname' => $value['lastname'], ':status' => $status));
    } else {
        $stmt2_ = $stmt2 -> execute();
    }

}

if ($stmt2_ && $stmt3_ && $stmt1_ && $stmt_ && $stmt5_ && $stmt4_) {
    echo json_encode(array(
        'error' => false,
        'message' => "Added"
    ));
}

这是我在table中执行的Inserting新数据。当我测试空数据的添加时(parentinfojson 为空)我得到错误 Notice: Undefined variable: stmt2_。我所做的是我添加了一个 else 语句并且我初始化了变量仍然我得到错误。我也试图在 else 语句中回应一些东西,但我得到了错误。现在我 运行 不知道如何在 json 为空时初始化变量,这样我就不会得到错误 undefined variable

有可能你接收到的json变量不为空,所以你也应该添加对valid json的检查,这是检查valid [=]的函数13=]

function isJson($string) {
   json_decode($string);
   return (json_last_error() == JSON_ERROR_NONE);
}

你刚刚在循环中定义了$stmt2,如果$parentinfojson为空,它肯定会变得未定义。为什么不define/initialize呢。

// initialize up top
$stmt_ = $stmt1_ = $stmt2_ = $stmt3_ = $stmt4_ = $stmt5_ = false;

$stmt2 = $dbh->prepare("INSERT INTO parentinfo (last_name,first_name,status) VALUES (:lastname,:firstname,:status)");
foreach($parentinfojson as $value) {
    $stmt2_ = $stmt2->execute(array(
        ':firstname' => $value['firstname'], 
        ':lastname' => $value['lastname'], 
        ':status' => $status
    ));
}

if ($stmt2_ && $stmt3_ && $stmt1_ && $stmt_ && $stmt5_ && $stmt4_) {
    echo json_encode(array(
        'error' => false,
        'message' => "Added"
    ));
}

旁注:另一种方法是动态构建查询,包括占位符和值。这样一来,您不必循环每批插入,而是创建 SQL 批量插入,然后将所有值绑定到一个插入调用中:

$stmt_ = $stmt1_ = $stmt2_ = $stmt3_ = $stmt4_ = $stmt5_ = false;

if(!empty($parentinfojson)) {
    $base_query = 'INSERT INTO parentinfo (last_name, first_name, status) VALUES ';
    $placeholders = implode(',', array_map(function($batch){
        return '(' . implode(',', array_fill(0, count($batch), '?')) . ')';
    }, $parentinfojson));
    $base_query .= $placeholders;
    $parentinfojson = call_user_func_array('array_merge', array_map('array_values', $parentinfojson));
    $stmt2 = $dbh->prepare($base_query);
    $stmt2_-> $stmt2->execute($parentinfojson);
}