[英]PHP/HTML Form not updating MySQL
我似乎無法找到解決方案,我也一直在尋找類似的線程,但沒有運氣
基本上這是我的代碼,當您單擊“更新”時,它旨在在表單字段中顯示您的當前名稱,然后您可以覆蓋它們並提交更改,但是遺憾的是它不會更新,它僅顯示原始設置的名字和姓氏,並且不更新數據庫,因此不顯示新的集合名稱。
<?php
include('../connect_db.php');
$res = mysqli_query($dbconnection, "SELECT * FROM users");
$row = mysqli_fetch_array($res);
if(isset($_POST['newFirst']) && isset($_POST['newLast'])){
$newFirst = $_POST['newFirst'];
$newLast = $_POST['newLast'];
$id = $_POST['id'];
$sql = "UPDATE users SET first_name='$newFirst', last_name='$newLast' WHERE id='$id'";
$res = mysqli_query($dbconnection, $sql);
}
?>
<div id="editSection">
<h3>Edit Details</h3>
<form action="edit_profile.php" method="POST">
<input type="hidden" value="<?php echo $row[0];?>" name="id"/>
<h2>First Name</h2>
<input type="text" name="newFirst" value="<?php echo $row[1];?>">
<h2>Last Name</h2>
<input type="text" name="newLast" value="<?php echo $row[2];?>">
<input type="submit" value="Update">
</form>
</div>
任何幫助將不勝感激 :)
親切的問候
〜馬特
我在查詢中看到一些錯誤
$sql = "UPDATE users SET first_name='$newFirst',
last_name='$newLast' WHERE id='first_name='$id'";
應該
$sql = "UPDATE users SET first_name='$newFirst',
last_name='$newLast' WHERE id= '$id'";
也
if(isset($POST['newFirst']) && isset($POST['newLast'])){
應該
if(isset($_POST['newFirst']) && isset($_POST['newLast'])){
您必須先連接到數據庫,然后才能使用。
$con=mysqli_connect("localhost","my_user","my_password","my_db");
還有其他一些錯誤,例如您必須像這樣使$POST['newFirst']
成為$_POST['newFirst']
if(isset($_POST['newFirst']) && isset($_POST['newLast'])){
並將查詢更改為
$sql = "UPDATE users SET first_name='$newFirst',last_name='$newLast' WHERE id= '$id'";
因為您在查詢id='first_name='$id'
末尾有錯誤,這是錯誤的
您在if條件中使用$POST
錯誤。
它必須稱為$_POST[..]
。
另外,您還應該在更新查詢中查看WHERE
。
我認為您的意思是: WHERE id= '$id'
您應該從$ _POST ['id']獲取您的ID; 我想這是您的行ID,更新查詢也必須在id = $ id的地方。
$id = $_POST['id'];
$sql = "UPDATE users SET first_name='$newFirst', last_name='$newLast' WHERE id=$id";
您還更新過數據庫嗎? 在發生更新之前,在選擇期間使用的row [0],row [1],row [2]將具有舊的一組值。 您可以在更新調用后使用mysqli_fetch_array($ res)嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.