Good morning everyone
I am trying to update the table with the new quantity selected, when I run the following function, however, I get this error:
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:xampphtdocsphp_AssessmentsshoppingListmodelfunctions_products.php:11 Stack trace: #0 C:xampphtdocsphp_AssessmentsshoppingListmodelfunctions_products.php(11): PDOStatement->execute() #1 C:xampphtdocsphp_AssessmentsshoppingListcontrollerproduct_update_process.php(21): update_item('57', '3', '1') #2 {main} thrown in C:xampphtdocsphp_AssessmentsshoppingListmodelfunctions_products.ph
Function to update the quantity, function_products.php:
<?php function update_item($soldID, $orderedQuantity, $itemQuantity) { global $conn; $sql = "UPDATE shopping_items.sold SET orderedQuantity = :itemQuantity WHERE soldID = :soldID"; $statement = $conn->prepare($sql); $statement->bindValue(':soldID', $soldID); $statement->bindValue(':orderedQuantity', $orderedQuantity); $statement->bindValue(':itemQuantity', $itemQuantity); $result = $statement->execute(); $statement->closeCursor(); return $result; } ?>
product_update_process.php
<?php // Require database connection require('connection.php'); // Require function require_once("../model/functions_products.php"); // Fetch the data required $soldID = $_GET['soldID']; $itemQuantity = $_POST['itemQuantity']; $orderedQuantity = $_POST['orderedQuantity']; if(empty($itemQuantity)) { echo '<script type="text/javascript">alert("The quantity is required.")</script>' ; // Redirect the browser window back to the add customer page echo "<script>setTimeout("location.href = '../index.php';",2000);</script>"; } else { //call the update_item() function $result = update_item($soldID, $itemQuantity, $orderedQuantity); // Redirect the browser window back to the admin page header("location: ../index.php"); } ?>
What could be the issue here?
Thanks for your assistance.
Advertisement
Answer
To add to @TangentiallyPerpendicular’s comment, why are you binding to :orderedQuantity
? This variable is not being used in your SQL statement, even though you have told the SQL engine to expect the variable. The column doesn’t need to be a variable in order pass a variable to it.