无法从函数更新 mysql 表,尽管查询响应成功


Unable to UPDATE mysql table from a function, although successful query response

我正在使用PHPMyAdmin作为我的数据库。单击我的 html 页面上的按钮时,将执行以下操作:

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;
        }
    }
?>

最后,db_functions.php中的setStopPOV(...)函数如下所示:

<?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
}

我已经尝试了一切方法来使更新正常工作,但我无法做到。我错过了什么?

从我的评论:

如果在查询后添加行$affected_rows = mysqli_affected_rows($dbc);并在function_result.txt中记录$affected_rows,则表示有多少行受到影响?您能否也记录两个版本的getFromDB的function_result.txt $query值.php并比较差异?

找到了答案 - 在一个实例中,数据库变量被命名为 STOPID 在另一个实例中,它是STOP_ID .通过OP比较查询,他们发现了差异并解决了问题。