如何将$ _POST的属性传递给函数?

时间:2017-03-04 16:42:03

标签: php forms

我想将属性传递给函数以更新数据库中的详细信息。我希望将表单中选中的所有列传递给函数。坦率地说,我不知道该怎么做。

我的代码如下:

if (isset($_POST["updateWineButton"])) {

    $wineID = $_POST["wineID"];
    $wineCountryID = $_POST["wineCountryID"];
    $wineSizeID = $_POST["wineSizeID"];
    $wineRatingID = $_POST["wineRatingID"];
    $wineColourID = $_POST["wineColourID"];
    $packageID = $_POST["packageID"];
    $wineCategoryID = $_POST["wineCategoryID"];
    $wineCode = $_POST["wineCode"];
    $price = $_POST["price"];
    $description = $_POST["description"];
    $wineRating = $_POST["wineRating"];
    $wineIMG = $_POST["wineIMG"];

    updateWine($updateWine);
    $status = "$description has been updated.";
}

更新葡萄酒功能

function updateWine($wineUpdate)
{
    global $pdo;
    $statement = $pdo->prepare("UPDATE WINE SET wineID=?, wineCountryID=?, wineSizeID=?, wineRatingID, wineColourID=?,
                            packageID=?, wineCategoryID=?, wineCode=?, price=?, description=?, wineRating=?, wineIMG=?
                            WHERE wineID=?");

    $statement->execute([$wineUpdate->wineID,
        $wineUpdate->wineCountryID,
        $wineUpdate->wineSizeID,
        $wineUpdate->wineRatingID,
        $wineUpdate->wineColourID,
        $wineUpdate->packageID,
        $wineUpdate->wineCategoryID,
        $wineUpdate->wineCode,
        $wineUpdate->price,
        $wineUpdate->description,
        $wineUpdate->wineRatingID,
        $wineUpdate->wineIMG]);

    $statement->fetch();
}

2 个答案:

答案 0 :(得分:2)

以下内容适用于您:

function updateWine()
{
    global $pdo;

    $keys = [
        "wineID", "wineCountryID", "wineSizeID", "wineRatingID", "wineColourID", "packageID", "wineCategoryID",
        "wineCode", "price", "description", "wineRating", "wineIMG",
    ];

    $results = [];

    foreach ($keys as $index) {
        if (isset($_POST[$index])) {
            $results[$index] = $_POST[$index];
        }
    }

    $statement = $pdo->prepare("UPDATE WINE SET " . implode('=?, ', array_keys($results)) . "=? WHERE wineID =?");

    $statement->execute(array_merge(array_values($results), [$_POST['wineID']]));

    $statement->fetch();
}

if (isset($_POST["updateWineButton"]) && isset($_POST['wineID'])) {
    updateWine();
}

希望这有帮助!

答案 1 :(得分:1)

如果我理解正确你想做这样的事情,

if (isset($_POST["updateWineButton"])) {
  $result = updateWine($_POST);
  if($result){
    $status = "$description has been updated.";
  }else{
    $status = "An error occurred.";
  }
}

//your function woud then look like ...

function updateWine($postdata){
  $wineID = $postdata["wineID"];
  $wineCountryID = $postdata["wineCountryID"];
  $wineSizeID = $postdata["wineSizeID"];
  $wineRatingID = $postdata["wineRatingID"];
  $wineColourID = $postdata["wineColourID"];
  $packageID = $postdata["packageID"];
  $wineCategoryID = $postdata["wineCategoryID"];
  $wineCode = $postdata["wineCode"];
  $price = $postdata["price"];
  $description = $postdata["description"];
  $wineRating = $postdata["wineRating"];
  $wineIMG = $postdata["wineIMG"];
  //udpate your database with the above values
  //check if update is successful
  return true;
  //else if there was an error
  return false;
}