2015-07-12 49 views
2

我目前正試圖通過PHP表單更新數據庫。首先,我從表單中的數據庫中獲取所有信息,然後嘗試更新該表單中的詳細信息以反映數據庫。數據庫不會更新 - 通過MySQLi的PHP表單

我可以成功設法從表單中獲取數據庫中的所有詳細信息,但不幸的是並未因此而更新。

這裏是一個檢索數據庫的信息的代碼,其中工程100%的表單中:

include_once 'db_connect.php'; 

if($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     echo "<form id=updateVehicle action='' method=post"; 
      echo "<div id='vehicleDescription'>"; 

       echo "<div>"; 
        echo "<label for=vin>VIN</label>"; 
        echo "<input type=text id=vin name=vin minlength=17 maxlength=17 placeholder=e.g. BMW1234567890ABCD value=" . $row['vin'] . " />"; 
        echo "<br/>"; 
       echo "</div>"; 

       echo "<div>"; 
        echo "<label for=make>Make</label>"; 
        echo "<input type=text id=make name=make minlength=3 maxlength=13 placeholder=e.g. BMW value=" . $row['make'] . " />"; 
        echo "<br/>"; 
       echo "</div>"; 

       echo "<div>"; 
        echo "<label for=model>Model</label>"; 
        echo "<input type=text id=model name=model minlength=2 maxlength=15 placeholder=e.g. 530D value=" . $row['model'] . " />"; 
        echo "<br/>"; 
       echo "</div>"; 

       echo "<div>"; 
        echo "<input type=text name=id value=" . $row['id'] . " />"; 
       echo "</div>"; 

       echo "<span><?php echo $errorMessage;?></span>"; 
      echo "</div> <!--End of vehicleDescription div-->"; 
      echo "<input type='submit' class='submit' value='Update Ads' />"; 
     echo "</form>"; 
    } 
} 

的動作是空的,因爲它提交給自己,我試圖用「回聲用htmlspecialchars( $ _SERVER [ 「PHP_SELF」]);」但它不起作用,所以我把它排除了。

這裏是處理不工作的更新代碼:

if(isset($_POST['vin'], $_POST['make'], $_POST['model'])) { 
    $vin = filter_input(INPUT_POST, 'vin', FILTER_SANITIZE_STRING); 
    $make = filter_input(INPUT_POST, 'make', FILTER_SANITIZE_STRING); 
    $model = filter_input(INPUT_POST, 'model', FILTER_SANITIZE_STRING); 
    $id = filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT); 

    if($insert_stmt = $mysqli->prepare("UPDATE vehicles SET (vin=?, make=?, model=? WHERE id=? ")) { 
     $insert_stmt->bind_param("sssi", $vin, $make, $model, $id); 

     if(!$insert_stmt->execute()) { 
      header('Location: ../error.php?err=Registration failure: UPDATE'); 
      $mysqli->close(); 
     } 
    } 
    header('Location: ../includes/register_success.php'); 
    $mysqli->close(); 
} 

對於一些未知的原因對我來說,它根本不會更新數據庫。 'db_connect.php'在我用於其他數據庫查詢時使用100%。

如果您能指出正確的方向,我將非常感謝您的幫助。

謝謝!

+0

你得到任何錯誤。在你的error_log中?如果你在清理它們之後嘗試echo $ vin $ make $ model $ id',會發生什麼? – Qirel

+0

丟失括號? – Drew

+0

嗨Qirel,每當我嘗試激活錯誤日誌時,我將以「致命錯誤:在'...'中找不到類'mysqli'。但是,如果錯誤報告被關閉,則代碼將按照它應該執行的方式執行,除非代碼不起作用上面。另外,當我回應這些變量時,什麼也沒有發生推測變量沒有設置?謝謝 – CodeX

回答

1

執行更新查詢時沒有出現錯誤嗎?我可以看到一個額外(SET

UPDATE vehicles SET (vin=?, make=?, model=? WHERE id=? 

這應該會導致查詢失敗這是一個很好的理由在數據庫中沒有更新的東西

+0

他沒有打開錯誤報告或關注日誌 – Drew

+0

嗨jedrzej.kurylo,我試圖刪除上面提到的括號,但仍然沒有運氣。任何其他建議?謝謝 – CodeX

+0

嗨德魯皮爾斯,每當我配置PHP錯誤日誌,我將最終與「致命的錯誤:Class'mysqli'未找到...」。如果我將PHP.ini中的錯誤日誌註釋掉,代碼工作正常,除了上面提到的那個。你知道這是爲什麼嗎?謝謝 – CodeX