为什么我的更新查询失败

时间:2015-05-08 14:22:01

标签: php mysql mysqli

我不能为我的生活弄清楚为什么这段代码不会更新数据库表'产品'。我已经有一个人在家看着它,但她没有任何线索。任何帮助将不胜感激。

edit_products.php

<?php
  $product = find_product_by_id($_GET["id"]);

  if (!$product) {
    // admin ID was missing or invalid or 
    // admin couldn't be found in database
    safe_redirect("manage_products.php");
  }

?>
<?php
if (isset($_POST['submit'])) {
  // Process the form

    $id = $product["id"];
    $product_id = mysql_prep($_POST["product_id"]);
    $product_name = mysql_prep($_POST["product_name"]);
    $product_image = mysql_prep($_POST["product_image"]);
    $highres_image = mysql_prep($_POST["highres_image"]);
    $linedraw_image = mysql_prep($_POST["linedraw_image"]);
    $product_video = mysql_prep($_POST["product_video"]);
    $product_pdf = mysql_prep($_POST["product_pdf"]);
    $product_keywords = mysql_prep($_POST["product_keywords"]);
    $product_description = mysql_prep($_POST["product_description"]);
    $product_enabled = mysql_prep($_POST["product_enabled"]);
    $product_weight = mysql_prep($_POST["product_weight"]);
    $product_length = mysql_prep($_POST["product_length"]);
    $product_width = mysql_prep($_POST["product_width"]);
    $product_height = mysql_prep($_POST["product_height"]);
    $product_url = mysql_prep($_POST["product_url"]);

// validations
    $required_fields = array("product_id", "product_name", "product_image", "product_description");
    validate_presences($required_fields);

    $fields_with_max_lengths = array("product_id" => 20);
    validate_max_lengths($fields_with_max_lengths);

    if (empty($errors)) {

    // Perform Update

    $query  = "UPDATE products SET ";
    $query .= "product_id = '{$product_id}', ";
    $query .= "product_name = '{$product_name}', ";
    $query .= "product_image = '{$product_image}', ";
    $query .= "highres_image = '{$highres_image}', ";
    $query .= "linedraw_image = '{$linedraw_image}', ";
    $query .= "product_video = '{$product_video}', ";
    $query .= "product_pdf = '{$product_pdf}', ";
    $query .= "product_keywords = '{$product_keywords}', ";
    $query .= "product_description = '{$product_description}', ";
    $query .= "product_enabled = '{$product_enabled}', ";
    $query .= "product_weight = '{$product_weight}', ";
    $query .= "product_length = '{$product_length}', ";
    $query .= "product_width = '{$product_width}', ";
    $query .= "product_height = '{$product_height}', ";
    $query .= "product_url = '{$product_url}', ";
    $query .= "WHERE id = {$id} ";
    $query .= "LIMIT 1";
    $result = mysqli_query($connection, $query);

    if ($result && mysqli_affected_rows($connection) == 1) {
      // Success
      $_SESSION["message"] = "Product updated.";
      safe_redirect("manage_products.php");
    } else {
      // Failure
      $_SESSION["message"] = "Product update failed.";
    }

  } 
  // This is probably a GET request

} // end: if (isset($_POST['submit']))

?>
<?php $layout_context = "admin"; ?>
<?php include("includes/layouts/header.php"); ?>
  <?php echo message(); ?> <?php echo form_errors($errors); ?>
  <h2>Edit Product: <?php echo htmlentities($product["product_id"]); ?></h2>
  <form action="edit_product.php?id=<?php echo urlencode($product["id"]); ?>" method="post">
    <p>Product ID:
      <input name="product_id" type="text" value="<?php echo htmlentities($product["product_id"]); ?>" size="15" />
    </p>
    <p>Product Name:
      <input name="product_name" type="text" value="<?php echo htmlentities($product["product_name"]); ?>" size="45" />
    </p>
    <p>Product Image:
      <input name="product_image" type="text" value="<?php echo htmlentities($product["product_image"]); ?>" size="45" />
    </p>
    <p>High Res Image:
        <input name="highres_image" type="text" value="<?php echo htmlentities($product["highres_image"]); ?>" size="45" />
    </p>
    <p>Line Drawing:
        <input name="linedraw_image" type="text" value="<?php echo htmlentities($product["linedraw_image"]); ?>" size="45" />
    </p>
    <p>Product Video:
        <input name="product_video" type="text" value="<?php echo htmlentities($product["product_video"]); ?>" size="45" />
    </p>
    <p>Product PDF:
        <input name="product_pdf" type="text" value="<?php echo htmlentities($product["product_pdf"]); ?>" size="45" />
    </p>
    <p>Product Keywords:
        <input name="product_keywords" type="text" value="<?php echo htmlentities($product["product_keywords"]); ?>" size="45" />
    </p>
    <p>Product Description:
        <input name="product_description" type="text" value="<?php echo htmlentities($product["product_description"]); ?>" size="45" />
    </p>
    <p>Product Enabled:
        <input name="product_enabled" type="text" value="<?php echo htmlentities($product["product_enabled"]); ?>" size="5" />
    </p>
    <p>Product Weight:<input name="product_weight" type="text" value="<?php echo htmlentities($product["product_weight"]); ?>" size="5" /> &nbsp; Length: <input name="product_length" type="text" value="<?php echo htmlentities($product["product_length"]); ?>" size="5" /> &nbsp; Width: <input name="product_width" type="text" value="<?php echo htmlentities($product["product_width"]); ?>" size="5" /> &nbsp; Height: <input name="product_height" type="text" value="<?php echo htmlentities($product["product_height"]); ?>" size="5" />
    </p>
    <p>Product URL:
        <input name="product_url" type="text" value="<?php echo htmlentities($product["product_url"]); ?>" size="45" />
    </p>
    <input type="submit" name="submit" value="Edit Product" />
  </form>

这是函数find_product_by_id

function find_product_by_id($product_id) {
    global $connection;

    $safe_product_id = mysqli_real_escape_string($connection, $product_id);

    $query = "SELECT * ";
    $query .= "FROM products ";
    $query .= "WHERE id = {$safe_product_id} ";
    $query .= "LIMIT 1";
    $product_set = mysqli_query($connection, $query);
    confirm_query($product_set);
    if($product = mysqli_fetch_assoc($product_set)) {
        return $product;
    } else {
        return null;
    }
}

1 个答案:

答案 0 :(得分:2)

问题是一个尾随的逗号,正如评论中所指出的那样。但真正的问题是缺乏错误检查。如果你有下面的代码示例,你会立即发现问题:

if ( ! $result = mysqli_query($connection, $query))
{
    echo 'ERROR: '.mysqli_error($connection);
}

这会向您指出您的查询无效。