2014-12-29 126 views
-1

我有下面的代碼顯示窗體中的mysql行信息,以便用戶可以編輯此信息,然後將其保存回數據庫:通過php更新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); 
    } 
} 

一旦運行,爲公司節省回聲被觸發但是當我檢查數據庫時,舊數據仍然在da中tabase即已更改的信息尚未保存。

沒有錯誤顯示,我看不出任何錯誤的PHP本身,有什麼想法?

謝謝

+2

查看'$ _POST ['company']'和'name =「companyname」'。你沒有'name =「company」'。它不會丟失錯誤,因爲您可能沒有檢查它們。在打開'<?php'標籤後立即在文件頂部添加錯誤報告 'error_reporting(E_ALL); ini_set('display_errors',1);'看看它是否產生任何東西。 –

+0

它已經有一段時間了,因爲我已經使用了mysql_ *,但如果我記得你的變量不需要文字引號。嘗試沒有單引號。 – rwhite35

+0

@ Fred-ii- $ _POST ['company']已過去此頁面,並添加錯誤報告yeailds nothing –

回答

0

我錯過了在隱​​藏的價值等於:

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

其現在的工作

0

首先打印後陣列像這樣再嘗試分配和數據庫更新

echo "<pre>"; 
    print_r($_POST); 
    echo "</pre>"; 
相關問題