我已经设置了一个自定义函数来更新我的查询,但是它似乎没有读取变量,我不确定我要去哪里。 这是我的职责。
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个小时中一直停留在我身边。
答案 0 :(得分:2)
您正在函数内部定义$productID = $_GET['id'];
,并在另一个函数中使用相同的变量。 $productID
显然对其他功能不可用。确保在任何函数之外定义它。
当前,该变量仅可用于定义它的本地范围。例如,在任何函数之外定义$productID
:
$productID = $_GET['id'];
您可以将此变量作为参数发送到select_productspreparedGETID()
:
function select_productspreparedGETID($productID){
//Your code
}
然后在函数$productID
和update_product()
中都包含select_productspreparedGETID()
,因为update_product()
已经有$productID
作为参数。