通过php更新MySQL行无法正常工作(但没有给出错误)

时间:2014-12-29 13:54:16

标签: php mysql

我有以下代码,它显示表单中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本身,任何想法?

谢谢

2 个答案:

答案 0 :(得分:0)

我错过了隐藏值中的等于:

<input type="hidden" name="companyid" value="<?php echo $row['ID']; ?>">

及其现在的工作

答案 1 :(得分:0)

首先打印你的帖子数组,然后尝试分配和数据库更新

  echo "<pre>";
  print_r($_POST);
  echo "</pre>";