Php 如何更新为随机值
我有一个像这样的小PHP脚本 我想更新18种不同级别的排名Php 如何更新为随机值,php,mysql,Php,Mysql,我有一个像这样的小PHP脚本 我想更新18种不同级别的排名 //Getting values $getir=mysql_query("SELECT username FROM users WHERE bot='1'"); //First level $level1="Ayakci"; // While for all while($getirx=mysql_fetch_array($getir)) { echo $getirx[0] . "<br>"; $guncel
//Getting values
$getir=mysql_query("SELECT username FROM users WHERE bot='1'");
//First level
$level1="Ayakci";
// While for all
while($getirx=mysql_fetch_array($getir)) {
echo $getirx[0] . "<br>";
$guncelle=mysql_query("UPDATE users SET rank='$level1' WHERE bot='1'");
//Pick a random level1 while exiting while
$seviye1=rand(1,18);
if($seviye1==1){
$level1="Baron";
} elseif($seviye1==2){
$level1="Patron";
} elseif($seviye1==3){
$level1="Baskan";
} elseif($seviye1==4){
$level1="Lider";
} elseif($seviye1==5){
$level1="Mit Ajani";
} elseif($seviye1==6){
$level1="Efsane";
} elseif($seviye1==7){
$level1="Efsanevi Baba";
} elseif($seviye1==8){
$level1="Baba";
} elseif($seviye1==9){
$level1="Isadami";
} elseif($seviye1==10){
$level1="Tetikci";
} elseif($seviye1==11){
$level1="Suclu";
} elseif($seviye1==12){
$level1="Seri Katil";
} elseif($seviye1==13){
$level1="Kiralik Katil";
}elseif($seviye1==14){
$level1="Katil";
}elseif($seviye1==15){
$level1="Hirsiz";
}elseif($seviye1==16){
$level1="Ozel Koruma";
}elseif($seviye1==17){
$level1="Bodyguard";
}elseif($seviye1==18){
$level1="Ayakci";
}
echo $level1 . "<br>";
}
它响应random,但不将秩值更新为random。它随机选取一个$level1并应用于所有相同的项目
它更新所有bot='1'值,但对所有值应用相同的级别
如何解决此问题?此查询:
UPDATE users SET rank='$level1' WHERE bot='1'
将用户表中的所有记录更新为$level1,其中bot等于1
它在每个循环中运行,这意味着每次记录上的秩字段都会改变
编辑:我同意Michael Berkowski对你的问题的第二个评论。这个问题:
UPDATE users SET rank='$level1' WHERE bot='1'
将用户表中的所有记录更新为$level1,其中bot等于1
它在每个循环中运行,这意味着每次记录上的秩字段都会改变
编辑:我同意Michael Berkowski对你问题的第二个评论。我想这就是你一直在努力实现的目标:
$guncelle=mysql_query("UPDATE users SET rank='".$level1."' WHERE bot='1' AND username = '".$getirx[0]."'");
我想这就是你一直在努力实现的目标:
$guncelle=mysql_query("UPDATE users SET rank='".$level1."' WHERE bot='1' AND username = '".$getirx[0]."'");
确定一些清理项目和建议:
首先,您应该强烈地考虑使用开关/CASE而不是多个I/EL,如果:
switch ($seviye1)
{
case 1:
$level1 = "Baron";
break;
case 2:
$level1 = "Patron";
break;
// and so on...
}
但是,您可能需要进一步定义一些数组,并使用返回的数字作为对数组索引的引用:
$avails = array
(
"Baron",
"Patron",
"Baskan",
"Lider",
// et. al.
);
$seviye1 = rand(0, 17);
$level1 = $avails[$seviye1];
编辑:
经过进一步考虑,您似乎正在尝试为所有bot值为1的用户分配一个随机排名
下面是我将如何重写它:
// Get user id's having bot = 1
$getir = mysql_query("SELECT username FROM users WHERE bot = 1;");
// Available levels
$avails = array
(
"Baron", "Patron", "Baskan", "Lider",
"Mit Ajani", "Efsane", "Efsanevi Baba", "Baba",
"Isadami", "Tetikci", "Suclu", "Seri Katil",
"Kiralik Katil", "Katil", "Hirsiz", "Ozel Koruma",
"Bodyguard", "Ayakci"
);
// Update database; assign random levels to users
while($getirx = mysql_fetch_array($getir))
{
echo $getirx[0] . "<br />";
// Pick random level
$level1 = $avails[rand(0, count($avails) - 1)];
// Perform update
$update_query = "UPDATE users SET rank = '$level1' WHERE bot = 1 AND username = '{$getirx[0]}';";
$guncelle = mysql_query($update_query);
}
如果为第一个用户分配Ayakci的等级/级别非常重要,那么您可以将其添加回;本例中省略了它。确定一些清理项目和建议:
首先,您应该强烈地考虑使用开关/CASE而不是多个I/EL,如果:
switch ($seviye1)
{
case 1:
$level1 = "Baron";
break;
case 2:
$level1 = "Patron";
break;
// and so on...
}
但是,您可能需要进一步定义一些数组,并使用返回的数字作为对数组索引的引用:
$avails = array
(
"Baron",
"Patron",
"Baskan",
"Lider",
// et. al.
);
$seviye1 = rand(0, 17);
$level1 = $avails[$seviye1];
编辑:
经过进一步考虑,您似乎正在尝试为所有bot值为1的用户分配一个随机排名
下面是我将如何重写它:
// Get user id's having bot = 1
$getir = mysql_query("SELECT username FROM users WHERE bot = 1;");
// Available levels
$avails = array
(
"Baron", "Patron", "Baskan", "Lider",
"Mit Ajani", "Efsane", "Efsanevi Baba", "Baba",
"Isadami", "Tetikci", "Suclu", "Seri Katil",
"Kiralik Katil", "Katil", "Hirsiz", "Ozel Koruma",
"Bodyguard", "Ayakci"
);
// Update database; assign random levels to users
while($getirx = mysql_fetch_array($getir))
{
echo $getirx[0] . "<br />";
// Pick random level
$level1 = $avails[rand(0, count($avails) - 1)];
// Perform update
$update_query = "UPDATE users SET rank = '$level1' WHERE bot = 1 AND username = '{$getirx[0]}';";
$guncelle = mysql_query($update_query);
}
如果为第一个用户分配Ayakci的等级/级别非常重要,那么您可以将其添加回;本例中省略了该代码。请将该代码缩进好吗?有点难读你想更新什么?你的陈述和它写的一模一样。用当前值$level1更新bot=1的所有行。也许您的意思是添加类似于和username='{$getirx[0]}'的内容,但在数据库端,它会以相同的级别更新ol bot,而不是随机更新。虽然我的回答没有反映这一点,我正在重新阅读OP问题,并将其解释为:我想为bot=1的所有用户分配一个随机排名,但它只分配相同的排名。您能缩进该代码吗?有点难读你想更新什么?你的陈述和它写的一模一样。用当前值$level1更新bot=1的所有行。也许您的意思是添加类似于和username='{$getirx[0]}'的内容,但在数据库端,它会以相同的级别更新ol bot,而不是随机更新。虽然我的回答没有反映这一点,我重新阅读了OP问题,并将其解释为:我想为bot=1的所有用户分配一个随机排名,但它只分配相同的排名。PHP中的引号具有解析PHP变量的效果。因此,应该没有理由退出字符串并在中连接$level1。但是,将用户名添加到WHERE子句可能是此处的关键:它的响应非常完美,但并没有以同样的方式更新数据库。它仍然对所有值应用一个级别。PHP中的引号具有解析PHP变量的效果。因此,应该没有理由退出字符串并在中连接$level1。但是,将用户名添加到WHERE子句可能是此处的关键:它的响应非常完美,但并没有以同样的方式更新数据库。它仍然将一个级别应用于所有值。