gpt4 book ai didi

php - 为什么我的 pg_query 更新方法会跳过行?

转载 作者:可可西里 更新时间:2023-10-31 23:37:08 25 4
gpt4 key购买 nike

我只是 php 的初学者,在 PostgeSQL 上更是如此。我可以说我对 php、json 和 sql 的了解非常有限。

我创建了一个更新方法来在我从数据库中创建或删除记录时刷新返回的数据。但有时,当我创建一条新记录时,新记录不会从 php 返回,直到我使用刷新函数两次。有时,当我删除一条记录时,也会发生同样的情况,我会晚一点收到结果。这种情况随机发生,有时在第一次点击时发生,有时在第四次点击时发生。

示例:假设我在表中已有一条记录并添加了一条新记录。一次偶然的机会,它返回了 [["6","1","Jason Smith","&id","89"] 而它本应返回 [["6","1","Jason Smith","&id","89"][["6","1","King Sczhult","&id","90"],但是当我查看数据库或通过浏览器刷新页面时,记录就在那里。

//The function that calls php
function refresh() {
$(".scell").html("");
$("#holidayCell").html("");

var updateTable = {

semSchedule: $("#semesterselect").val(),
operation: "updateTable"
}

$.post( "scheduleengine.php", updateTable).done(function( response ) {
if (response.val != 0){
//This is where I decode returned table array
}else {
};




});
};
//This is the php switch-case.

switch($_POST["operation"]){

case "updateTable":

echo updateTableFunc(post("semSchedule"));

break;

//Update Function

function updateTableFunc($semID = null){



$result = "";

$scqrysql = "SELECT id, tutor, hour, day FROM schedule WHERE semester='$semID'";
$scqry = pg_query($scqrysql) or die(pg_result_error());

while ($row = pg_fetch_array($scqry)) {

$scTutorID = $row['tutor'];
$tqry = pg_query("SELECT id, tname, tsurname FROM tutors WHERE id='$scTutorID'") or die(pg_result_error());
while($tutorrow=pg_fetch_array($tqry)){

$scTutor = $tutorrow['tname'] . " " .$tutorrow['tsurname'];

};

$scHourRow = $row['hour'];
$scDay = $row['day'];
$scID = $row['id'];

$scHour = substr($scHourRow, 2, 1);
$scDayNameArray = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday");
$scDayNumberArray = array("2", "3", "4", "5", "6");
$scDayNameReplace = str_replace($scDayNameArray, $scDayNumberArray, $scDay);

$resultArrays = array($scDayNameReplace, $scHour, $scTutor, "&id", $scID);
$result[] = $resultArrays;


};

if(is_null($result)){
$result = "";
echo json_encode($result);
}else{

$json = json_encode($result);
echo $json;
};


};

最佳答案

这就是问题所在。看起来你正在使用 jquery 来调用这两个东西,而且你正在异步地做这件事——这意味着两者几乎立即开始,并且任何一个都可以先完成(竞争条件)。当“A”赢得比赛时,你就是黄金。当 B 赢得比赛时,你必须再次刷新。您需要调用“A”(更新查询),然后在完成后调用“B”。

关于php - 为什么我的 pg_query 更新方法会跳过行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42077379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com