Я просто новичок с php, тем более на PostgeSQL. Я могу сказать, что мои знания по php, json и sql очень ограничены.Почему мой метод обновления pg_query пропускает строку?
Я создал метод обновления, чтобы обновлять возвращаемые данные всякий раз, когда я создаю или удаляю запись из базы данных. Но иногда, когда я создаю новую запись, новая запись не возвращается с php, пока я не воспользуюсь функцией обновления дважды. Иногда бывает так же, когда я удаляю запись, я получаю результаты с одним кликом. Это происходит случайным образом, иногда при первом щелчке, иногда на 4-м щелчке.
Пример: Предположим, у меня есть существующая запись на столе и добавлена новая запись. Случайно он возвратил [[«6», «1», «Джейсон Смит», «& id», «89»], когда он должен был вернуть [[«6», «1», «Джейсон Смит», "& 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;
};
};
Что такое код, на который называет этот код? Возможно ли это сделать асинхронный запрос или использовать другое соединение с БД каким-то образом? Вы * МОЖЕТЕ * хотеть запустить «commit» перед запуском этого кода и посмотреть, что произойдет. –
Я отредактировал фрагмент кода. – Ahmet
Это тоже не так, я просто попробовал «зафиксировать» как до кодов обновлений, так и после запросов на вставку/удаление. – Ahmet