我正在使用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比较查询,他们发现了差异并解决了问题。