我有以下代码,它显示表单中mysql行的信息,以便用户可以编辑此信息,然后将其保存回数据库:
$companyeditsql = "SELECT * FROM Companys WHERE CompanyName = '" . $_POST['company'] . "'";
$companysresult=mysqli_query($conn, $companyeditsql);
$row = mysqli_fetch_array($companysresult)
?>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
Company Name: <input type="text" name="companyname" value="<?php echo $row['CompanyName']; ?>"><br>
E-mail: <input type="email" name="email" value="<?php echo $row['Email']; ?>"><br>
Number of Drivers: <input type="number" name="numdrivers" value="<?php echo $row['DriverCount']; ?>"><br>
Contact Name: <input type="text" name="contactname" value="<?php echo $row['ContactName']; ?>"><br>
Address: <input type="text" name="address" value="<?php echo $row['Address']; ?>"><br>
Phone Number: <input type="tel" name="phonenumber" value="<?php echo $row['PhoneNumber']; ?>"><br>
Password: <input type="password" name="password"><br>
Notes: <input type="text" name="notes" value="<?php echo $row['Notes']; ?>"><br>
<input type="hidden" name="companyid" value"<?php echo $row['ID']; ?>">
<input type="submit" name="addedittedcompany" value="Save Company">
</form>
这很好用,并显示正确的信息,然后我有下面的代码,它应该采取编辑的数据并将其保存回数据库:
}else if (isset($_POST['addedittedcompany'])){
$CompanyName = $_POST['companyname'];
$Email = $_POST['email'];
$NumberofDrivers = $_POST['numdrivers'];
$ContactName = $_POST['contactname'];
$Address = $_POST['address'];
$PhoneNumber = $_POST['phonenumber'];
$Password = $_POST['password'];
$Notes = $_POST['notes'];
$companyid = $_POST['companyid'];
$options = [
'cost' => 11,
];
$CompanyName = mysqli_real_escape_string($conn, $CompanyName);
$Email = mysqli_real_escape_string($conn, $Email);
$NumberofDrivers = mysqli_real_escape_string($conn, $NumberofDrivers);
$ContactName = mysqli_real_escape_string($conn, $ContactName);
$Address = mysqli_real_escape_string($conn, $Address);
$PhoneNumber = mysqli_real_escape_string($conn, $PhoneNumber);
$Notes = mysqli_real_escape_string($conn, $Notes);;
if (!empty($Password)){
$Password = mysqli_real_escape_string($conn, $Password);
$hash = password_hash($Password, PASSWORD_BCRYPT, $options);
$editcompanysql = "UPDATE Companys SET CompanyName='$CompanyName', Email='$Email', DriverCount='$NumberofDrivers', ContactName='$ContactName', Address='$Address', PhoneNumber='$PhoneNumber', Notes='$Notes', PassHash='$hash' WHERE ID = '$companyid'";
}else{
$editcompanysql = "UPDATE Companys SET CompanyName='$CompanyName', Email='$Email', DriverCount='$NumberofDrivers', ContactName='$ContactName', Address='$Address', PhoneNumber='$PhoneNumber', Notes='$Notes' WHERE ID = '$companyid'";
}
if (mysqli_query($conn,$editcompanysql)){
echo "Company Saved";
echo mysqli_error($conn);
}else{
echo "Failed to save Company";
echo mysqli_error($conn);
}
}
一旦运行,公司保存的回应被解雇但是当我检查数据库时,旧数据仍然在数据库中,即更改的信息尚未保存。
没有显示错误,我看不出任何错误的PHP本身,任何想法?
谢谢
答案 0 :(得分:0)
我错过了隐藏值中的等于:
<input type="hidden" name="companyid" value="<?php echo $row['ID']; ?>">
及其现在的工作
答案 1 :(得分:0)
首先打印你的帖子数组,然后尝试分配和数据库更新
echo "<pre>";
print_r($_POST);
echo "</pre>";