gpt4 book ai didi

php - 如何使用 PHP 和 MySQLi 检查一个多维数组值与另一个多维数组的值并根据结果更新批量数据?

转载 作者:行者123 更新时间:2023-11-29 02:16:30 25 4
gpt4 key购买 nike

我有一个包含三列 id、points、rank 的表格。我会及时更新所有字段的数据,以便分数上下波动,但旧排名保持不变,因此我试图找到一种方法,根据获得的分数为每个 ID 赋予其应得的排名。

我在这个表中有超过 2000 行。我想用 php5+ 和 mysqli 来做吗?我想我有一个解决方案,但即使超时设置为 1200 秒它也会超时并且内存耗尽。

我认为我的解决方案工作准确,但任何循环都需要一些医生。在这里,我的粗略目标是“更新”查询以准确获取所有积分,并根据获得的积分授予 id 排名:

<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/includes/db.inc.php';


$a2= mysqli_query($link, "SELECT COUNT(*) as count FROM p1");
$b2 =mysqli_fetch_array($a2);
$count = $b2['count'];

$i=1;
while($i<=$count){
$a1= mysqli_query($link, "SELECT points FROM p1 ORDER BY points DESC LIMIT $i");
if(!$a1){
echo mysqli_error($link);
}
while($po = mysqli_fetch_array($a1)){

$ross[] = $po;
}
foreach($ross as $pot){
$points=$pot['points'];
}

$a5a= mysqli_query($link, "SELECT id FROM p1 WHERE points = '$points'");

while($popo = mysqli_fetch_array($a5a)){

$idi=$popo;
}
foreach($idi as $idm){
$id=$idm['id'];

$rank = $i;
$update = mysqli_query($link,"UPDATE p1 SET rank = '$rank' WHERE points = '$points' AND id ='$id'");
}
if(!$update){
echo "Error updating Rank".mysqli_error($link);
} else {
echo "Succuessul for where id = '$id' and points = '$points' set rank = '$rank'<br/>";
}
$i++;
}
?>

最佳答案

我已经用更精简和更短的代码替换了我原来的答案,如果连续用户有相同的点数,你当然可以包括对排名计数器的修改,但你可以自己计算

这段代码只有一个循环,并且可以节省内存和您的数据库

<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/includes/db.inc.php';
$a = mysqli_query($link, "SELECT id, points, rank FROM p1 ORDER BY points DESC "); // lets get users in new ordering
$rank = 1; // new ranks
while($line = mysqli_fetch_array($a)){
if ($rank != $line["rank"]) { //if old rank is different we will hit db with new value
echo "updating id ".$line["id"]." from rank ".$line["rank"]." to rank ".$rank." <br>";
if(!mysqli_query($link,"UPDATE p1 SET rank = '".mysqli_real_escape_string($link,$rank)."' WHERE id ='".mysqli_real_escape_string($link,$line["id"])."'")) {
echo "Error updating Rank".mysqli_error($link);
}
}else { //if its the same we just leave the message for now
echo "ignoring id ".$line["id"]." previous rank ".$line["rank"]." , new rank ".$rank." <br>";
}
$rank++; // next user so lets increment the counter
}
?>

关于php - 如何使用 PHP 和 MySQLi 检查一个多维数组值与另一个多维数组的值并根据结果更新批量数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38773108/

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