我遇到無法更新資料庫的問題。我認為錯誤在於更新查詢本身,但我對 SQL 和 PHP 很陌生,因此我無法 100% 確定。任何幫助將不勝感激。
我收到了未定義的索引錯誤,我已修復該錯誤,但問題仍然存在:
$id = $_GET["id"]; $listdate = isset($_POST['list_date']) ? $_POST['list_date'] : ''; $listprice = isset($_POST['list_price']) ? $_POST['list_price'] : ''; $solddate = isset($_POST['sold_date']) ? $_POST['sold_date'] : ''; $soldprice = isset($_POST['sold_price']) ? $_POST['sold_price'] : ''; $shipdate = isset($_POST['ship_date']) ? $_POST['ship_date'] : ''; $shipcost = isset($_POST['ship_cost']) ? $_POST['ship_cost'] : '';
更改為上述程式碼(不起作用)後,我仍然遇到更新資料庫的問題。這是完整的當前程式碼:
<? $id = $_GET["id"]; $listdate = $_POST["list_date"]; $listprice = $_POST["list_price"]; $solddate = $_POST["sold_date"]; $soldprice = $_POST["sold_price"]; $shipdate = $_POST["ship_date"]; $shipcost = $_POST["ship_cost"]; $servername = "localhost"; $username = "inventory"; $password = "*****"; $db = "products"; $conn = new mysqli($servername, $username, $password, $db); if ($conn->connect_error){ die("Connection failed: ". $conn->connect_error); } $sql = "UPDATE inventory SET list_date = '$listdate', list_price = '$listprice', sold_date = '$solddate', sold_price = '$soldprice', ship_date = '$shipdate', ship_cost= '$shipcost' WHERE product_id = ' .$id. '"; if($conn->query($sql) === TRUE){ echo "Record Saved."; } else { echo "Error!"; } $conn->close(); ?>
即使我手動將 ID 更改為資料庫分配的 ID,更新仍然不起作用,並且資料庫中沒有任何更改。我知道該表格看起來不太漂亮,但我將其設定為測試。以下是我如何設定表單來捕獲更改:
<form action="/SulleySells/scripts/updateitem.php?id=<?php echo $id;?>" method="post"> <script type="text/javascript"> function ShowHideDiv(listed) { var updatel = document.getElementById("updatel"); updatel.style.display = listed.checked ? "block" : "none"; } function ShowHideDiv2(sold) { var updates = document.getElementById("updates"); updates.style.display = sold.checked ? "block" : "none"; } </script> <label for="listed"> <input type="checkbox" id="listed" onclick="ShowHideDiv(this)" /> Listed? </label> <label for="sold"> <input type="checkbox" id="sold" onclick="ShowHideDiv2(this)" /> Sold? </label> <hr> <div id="updatel" style="display: none"> <h3>Update Listing Details:</h3> <label for="listdate">Listed Date:</label> <input type="date" id="updateltext" name="listdate" value=""/> <br> <label for="listprice">Listed Price:</label> <input type="text" id="updateltext" name="listprice" value=""/> <br> <button>Update</button> <hr> </div> <div id="updates" style="display: none"> <h3>Update Sale Details:</h3> <label for="solddate">Sold Date:</label> <input type="date" id="updatestext" name="solddate" value=""/> <br> <label for="soldprice">Sold Price:</label> <input type="text" id="updatestext" name="soldprice" value=""/> <br> <label for="shipdate">Ship Date:</label> <input type="date" id="updatestext" name="shipdate" value=""/> <br> <label for="shipcost">Ship Cost:</label> <input type="text" id="updatestext" name="shipcost"value=""/> <br> <button>Update Sold Info</button> <hr> </div> </form>
首先你必須改變:
至:
符合您的 php 程式碼中的內容並將其套用到其餘的 html 輸入
然後更改:
至:
通知 不要忘記在輸入中使用 id="" 格式化標籤中的 for="" ,以免給出不同的結果