2017-03-09 104 views
-1

有什麼不對的語法如下:MySQL的更新不更新任何行

if(isset($_POST['save_changes'])) { 
    // Get current id of customer 
    $currentID = $_GET['id']; 
    // Get Input Values 
    $newfirstName  = validateInputData($_POST['first_name']); 
    $newlastName   = validateInputData($_POST['last_name']); 
    $newemail   = validateInputData($_POST['email']); 
    $newphone   = validateInputData($_POST['phone_number']); 
    $newaddressOne  = validateInputData($_POST['address_one']); 
    $newaddressTwo  = validateInputData($_POST['address_two']); 
    $newcounty   = validateInputData($_POST['county']); 
    $newcity    = validateInputData($_POST['city']); 
    $newzipCode   = validateInputData($_POST['zip_code']); 
    $newprovince   = validateInputData($_POST['province']); 
    $newstate   = validateInputData($_POST['state']); 

    // Queries 
    $query = "UPDATE customers 
       SET 
       first_name='$newfirstName', 
       last_name='$newlastName', 
       email='$newemail', 
       phone='$newphone' 
       WHERE id='$currentID' 
       "; 
    $conn->query($query) or die($conn->error.__LINE__); 

    $query = "UPDATE addresses 
       SET 
       address_one='$newaddressOne', 
       address_two='$newaddressTwo', 
       county='$newcounty', 
       city='$newcity', 
       province='$newprovince', 
       zip_code='$newzipCode', 
       state='$newstate' 
       WHERE customer_id='$currentID' 
       "; 
    $conn->query($query) or die($conn->error.__LINE__); 

    // Bring user back to index 
    header("Location: index.php?alert=savechanges"); 

    // Close connection to database 
    $conn->close(); 
    } 

上面的查詢運行良好,但該行不會被更新。所有的字段名都是合適的。當在phpMyAdmin中嘗試查詢時,行更新。

請幫忙,謝謝。

+0

沒有錯誤出現? – Swellar

+0

在if語句裏'echo「save_changes被設置爲」; exit;'並查看它是否輸出。 – mkaatman

+0

什麼都沒有發生。一切順利。當我使用affected_rows功能時,值爲空。 –

回答

-1

查詢中沒有錯誤。請檢查您是否獲得客戶ID。

$currentID = $_GET['id']; 
echo $currentID; 

還有一個建議,把周圍的表和列名的反引號像

$query = "UPDATE `customers` 
      SET 
      `first_name` = '$newfirstName', 
      `last_name` = '$newlastName', 
      `email` = '$newemail', 
      `phone` = '$newphone' 
      WHERE `id` = '$currentID' 
      "; 

$query = "UPDATE `addresses` 
      SET 
      `address_one` = '$newaddressOne', 
      `address_two` = '$newaddressTwo', 
      `county` = '$newcounty', 
      `city` = '$newcity', 
      `province` = '$newprovince', 
      `zip_code` = '$newzipCode', 
      `state` = '$newstate' 
      WHERE `customer_id` = '$currentID' 
      "; 

另一個建議是,你直接使用用戶輸入的值在查詢的WHERE子句,這將是危險的。

-1

您的validateInputData()函數沒有進行任何驗證。希望它正在做一些轉義,這意味着你正在爲你的數據庫連接對象假設全局作用域。你沒有告訴我們這是什麼類型的數據庫對象。你的錯誤檢查很差。重定向之後,您不會執行明確的退出。

除此之外,SQL看起來沒問題。