2016-03-07 82 views
0

我正在爲我的數據庫使用PHPMyAdmin。當點擊我的HTML頁面上的一個按鈕,下面是執行:無法更新函數中的mysql表,但成功的查詢響應

var stopID = 10; // Sample 
var stopPOV = "129.29,158.58"; // Sample 

$.ajax({ 
    url: "getFromDB.php", 
    type: "post", 
    dataType: 'json', 
    data: { 
     action: "setStopPOV", 
     stopID : stopID, 
     stopPOV : stopPOV 
    }, 
    success: function(data) { 
     //alert(data); 
    } 
}); 

我getFromDB.php是這樣的:

<?php 
    require_once('connect.php'); 
    require_once('db_functions.php'); 

    if (isset($_POST["action"]) && !empty($_POST["action"])) { 
     $action = $_POST["action"]; 

     switch ($action) { 
      case "setStopPOV": 
       $stopID = $_POST['stopID']; 
       $stopPOV = $_POST['stopPOV']; 

       setStopPOV($stopID, $stopPOV); 
       break; 
     } 
    } 
?> 

最後,setStopPOV(...)內db_functions.php功能如下:

<?php 
    function setStopPOV($stopID, $stopPOV) { 
     global $dbc;  // Set in connect.php 

     $query = "UPDATE stop "; 
     $query .= "SET STOP_POV = '{$stopPOV}' "; 
     $query .= "WHERE STOP_ID = '{$stopID}'"; 

     $result = @mysqli_query($dbc, $query) or die("Error updating record: " . mysqli_error($dbc)); 

     if ($result) { 
      file_put_contents('function_result.txt', "Record updated successfully" . PHP_EOL, FILE_APPEND); 
     } else { 
      file_put_contents('function_result.txt', "Error updating record" . PHP_EOL, FILE_APPEND); 
     } 
    } 
?> 

此輸出'記錄已更新成功'信息的txt文件,但沒有更新數據庫中。

但是,如果getFromDB.php是這樣的:

<?php 
    require_once('connect.php'); 
    require_once('db_functions.php'); 

    // NEW CODE ADDED START 
    $id = 10; 
    $pov = "129.29,158.58"; 

    $qry = "UPDATE stop "; 
    $qry .= "SET STOP_POV = '{$pov}' "; 
    $qry .= "WHERE STOPID = '{$id}'"; 

    $result = @mysqli_query($dbc, $qry) or die("Error updating record: " . mysqli_error($dbc)); 

    if ($result) { 
     file_put_contents('function_result.txt', "Record updated successfully" . PHP_EOL, FILE_APPEND); 
    } else { 
     file_put_contents('function_result.txt', "Error updating record" . PHP_EOL, FILE_APPEND); 
    } 
    // NEW CODE ADDED FINISH 

    ... 

    // The rest is previous code as shown above 
    if (isset($_POST["action"]) && !empty($_POST["action"])) { 
     $action = $_POST["action"]; 

     switch($action) { 
      // Code 
     } 
    } 
?> 

我直接進入頁面(即本地主機/ getFromDB.php),TXT文件有「記錄成功更新」,並且數據庫更新!

重要的是要注意,我的db_functions.php包含其他功能,從數據庫檢索信息,他們工作正常。例如,這是在db_functions.php

function getRouteList() { 
    global $dbc; 

    $query = "SELECT RTE_NAME, TRAV_DIR "; 
    $query .= "FROM route"; 

    $result = @mysqli_query($dbc, $query) or die("Error in Selecting " . mysqli_error($dbc)); 

    // Do whatever I want with the retrieved data 
} 

我想盡一切辦法讓更新工作,一個這樣的功能,但我一直沒能來。我錯過了什麼?

+0

作爲另一個調試步驟,如果在原始的getFromDB.php文件中,將setStopPOV($ stopID,$ stopPOV);'set'更改爲'setStopPOV(10,「129.29,158.58」);'?這一步將有助於確定問題是否與將參數正確傳遞給getFromDB.php相關,或者問題是否在其他地方。 –

+0

@BenHolness正在通過setStopPOV函數接收/解析傳遞的參數,並得到相同的結果。 '記錄更新成功',數據庫沒有變化。 – Ali

+0

您的$ _POST是否包含您期望的內容?你有沒有試過傾銷它?調試101. – purpleninja

回答

0

從我的評論:

如果添加行$affected_rows = mysqli_affected_rows($dbc);查詢後並記錄在function_result.txt$affected_rows,多少行沒有說受到了影響?您是否還可以爲兩個版本的getFromDB.php記錄$query的值function_result.txt並比較差異?

找到了答案 - 在一個實例中,數據庫變量在另一個實例中被命名爲STOPID,它是STOP_ID。通過OP比較查詢,他們找到了差異並解決了問題。

+0

謝謝Ben!不能相信我讓那個人滑倒,但總是那些小事! – Ali