gpt4 book ai didi

php不清除不同查询之间的表

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:27 25 4
gpt4 key购买 nike

我正在使用 jquery 将变量提供给 php 页面。

我希望 php 清除数据库中的一个表,根据变量加载新数据,查询新数据并回显结果。

问题是,每次我点击 php 页面时,php 似乎都没有清空表格。当我向 php 页面提供两组变量时,两个查询都会出现相同的结果。结果是我想要的组合。我做错了什么,有人知道吗?

j查询:

$.ajax({
url: "php/getTotals.php",
method: "POST",
data: {year : strYear, race: 'USP', type: strType},
success: function(data) {
var objPrez = jQuery.parseJSON(data);
fillTotal(objPrez, tbl_prezresults);

},
error: function(jxhr, statusText, err) {
console.log(statusText + " " + err);
}
});

//get gov totals
$.ajax({
url: "php/getTotals.php",
method: "POST",
data: {year : 2010, race: 'GOV', type: strType},
success: function(data) {
var objGov = jQuery.parseJSON(data);
fillTotal(objGov, tbl_govresults);

},
error: function(jxhr, statusText, err) {
console.log(statusText + " " + err);
}
});

getTotals.php:

require_once ('constants_test.php'); 

$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (mysqli_connect_errno()) {
printf("Connect failed: %s", mysqli_connect_error());
exit;
}
if( $_POST) {
$type = mysqli_real_escape_string($db, $_POST['type']);
$year = mysqli_real_escape_string($db, $_POST['year']);
$race = mysqli_real_escape_string($db, $_POST['race']);

$db->query("delete from elections_temp");

$data = array();
$q = "INSERT INTO elections_temp (SELECT * FROM elections where electionOffice = '" . $race . "' AND electionYear = '" . $year . "' AND electionType = '" . $type . "')";
$db->query($q);
$q_sums = "select firstName, lastName, party, sum(votes) as totvotes from elections_temp group by lastName order by totvotes desc";
$result = $db->query($q_sums);
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
//Add this row to the reply
$data[] = $row;
}
echo json_encode($data);

$db->close();

} else {
echo "You shouldn't be here.";
}

最佳答案

你正在做的是:

同时调用 php 脚本的 2 个 ajax 调用(它们之间可能有几毫秒的延迟)。

然后服务器执行您希望它执行的操作,但是奇怪的事情发生了,因为您的临时表在每次请求时都会创建/截断。

接下来会发生什么:

  1. 请求1进入
  2. 运行 php 代码
  3. 请求2进入
  4. 运行request2代码
  5. request1run 锁定数据库中的 tem 表并开始创建它和其他内容
  6. request2run 想要创建相同的临时表但不能,因为 request1run 仍在执行操作
  7. request1run 结束了他在数据库临时表中的工作
  8. request2run 现在用临时表做他的事,删除所有记录并添加内容
  9. request1run 必须等待才能从临时表中选择内容,因为 request2run 仍在处理他的业务。
  10. request2run 完成创建临时表,request1run 可以选择他的数据并将其返回给客户端
  11. request2run选择数据返回给客户端

因此,因为您同时触发两个 ajax 调用,所以它们最终会在服务器上相互混淆。

您的服务器可能不够快,无法在请求 2 启动之前处理请求 1。

关于php不清除不同查询之间的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25018201/

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