Мой php не обновит таблицу продуктов. Я знаю, что мой запрос GET работал, когда я тестировал его с эхом для отображения идентификатора. Я смущен тем, как я могу заставить его работать? Я думаю, что это может быть связано с формой action = на моей форме, но я смущен! Кто-то может помочь?
<?php // Connection file require 'db.php'; if (((!empty($_GET["mode"])) && (!empty($_GET["id"]))) && ($_GET["mode"] == "update")) { // If update echo $_GET['id']; if (isset($_POST["updateSubmit"])) { $pName = $_POST["updateProductName"]; echo $pName; $query = "UPDATE products " . "SET p_name = '" . $_POST["updateProductName"] . "', " . "p_type = '" . $_POST["updateProductType"] . "', " . "p_desc = '" . $_POST["updateProductDesc"] . "', " . "p_price = '" . $_POST["updateProductPrice"] . "', " . "p_stock = " . $_POST["updateProductStock"] . ", " . "WHERE id=" . $_GET['id'] . ";"; $result = mysqli_query($conn, $query); } } ?> <div> <form id="updateForm" name="updateForm" action="<?php echo "?mode=update&id=" . $productDetails["id"]; ?>" method="post"> <label>Product name:</label><br> <input type="text" name="updateProductName"><br> <label>Product type</label><br> <select name="updateProductType"> <option value="Jackets/coats">Jackets/coats</option> <option value="Accessories">Accessories</option> <option value="Shirts">Shirts</option> <option value="Jeans">Jeans</option> <option value="Trousers">Trousers</option> <option value="Shoes">Shoes</option> <option value="Suits">Suits</option> </select> <p>Product description:</p> <textarea name="updateProductDesc" rows="10" cols="30"></textarea><br> <label>Product price:</label><br> <input type="text" name="updateProductPrice"><br> <label>Stock level:</label><br> <input type="text" name="updateProductStock"><br> <input type="submit" name="updateSubmit" value="Submit"> </form> </div> <?php ?>
Я думаю, что проблемы – это неправильное использование '
в одной или обеих этих строках
. "p_price = '" . $_POST["updateProductPrice"] . "', " . "p_stock = " . $_POST["updateProductStock"] . ", "
Если тип является строкой, вам нужно использовать '
как вы использовали в p_price, иначе, если это float или int, вы не должны использовать '
как вы это делали для p_stock.
Кажется, вы ошибались в этих двух областях. Поскольку p_price будет float, а p_stock – строка.
. "p_price = " . $_POST["updateProductPrice"] . ", " . "p_stock = '" . $_POST["updateProductStock"] . "' , "
В вашем запросе есть две проблемы …
У вас есть одна дополнительная запятая перед секцией Where и ваши недостающие метрики на p_stock.
Должно быть: "p_stock = '" . $_POST["updateProductStock"] . "' "
"p_stock = '" . $_POST["updateProductStock"] . "' "
"p_stock = '" . $_POST["updateProductStock"] . "' "
и « . "WHERE id='" . $_GET['id'] . "'";
. "WHERE id='" . $_GET['id'] . "'";