使用PDO更新查询时出错

时间:2018-07-18 04:43:27

标签: php sql pdo

我已经设置了一个自定义函数来更新我的查询,但是它似乎没有读取变量,我不确定我要去哪里。 这是我的职责。

    function update_product($productID, $productName, $productDescription, $productPrice, $categoryID){
    global $conn;
    $sql = "UPDATE product SET productName = :productName, productDescription = :productDescription, productPrice = :productPrice, categoryID = :categoryID WHERE productID = :productID";
    $statement = $conn->prepare($sql);
    $statement->bindValue(':productName', $productName);
    $statement->bindValue(':productDescription', $productDescription);
    $statement->bindValue(':productPrice', $productPrice);
    $statement->bindValue(':categoryID', $categoryID);
    $statement->bindValue(':productID', $productID);
    $result = $statement->execute();
    $statement->closeCursor();
    return $result;
}

这是我调用函数的地方

$result = update_product($productID, $productName, $productDescription, $productPrice, $categoryID);

我还将在获取ID并加载输入的地方添加我的函数...

function select_productspreparedGETID(){
global $conn;

$productID = $_GET['id'];

//prepared
$sql = "SELECT * FROM product WHERE productID = :productID";
$statement = $conn->prepare($sql);
$statement->bindValue(':productID', $productID);
$statement->execute();
$result = $statement->fetchAll();
$statement->closeCursor();

foreach($result as $row):
  ?>
  <form method="post" action="../controller/product_update_process.php" enctype="multipart/form-data">
      <div>
          <label>Name* </label>
            <input id="Product_Name" type="text" name="Product_Name" value="<?php echo $row['productName'] ?>" />
      </div>
      <div>
            <label>Description* </label>
            <textarea id="productDescription" name="productDescription" /><?php echo $row['productDescription'] ?></textarea>
      </div>
      <div>
              <label>Price* </label>
              <input id="Price" type="text" name="Price" value="<?php echo $row['productPrice'] ?>" />
      </div>
      <input type="submit" name="submit" value= "Update Cart">
  </form>
  <?php
      endforeach;

}

任何有关如何改善我的结构或更好地克服此错误的建议,我将在过去20个小时中一直停留在我身边。

1 个答案:

答案 0 :(得分:2)

您正在函数内部定义$productID = $_GET['id'];,并在另一个函数中使用相同的变量。 $productID显然对其他功能不可用。确保在任何函数之外定义它。

当前,该变量仅可用于定义它的本地范围。例如,在任何函数之外定义$productID

$productID = $_GET['id'];

您可以将此变量作为参数发送到select_productspreparedGETID()

function select_productspreparedGETID($productID){
    //Your code
}

然后在函数$productIDupdate_product()中都包含select_productspreparedGETID(),因为update_product()已经有$productID作为参数。