MySqli更新查询中的随机数

时间:2017-07-02 04:18:23

标签: php mysql mysqli

我是android开发人员并且对php没有太多了解。目前我正在为我的Android应用程序的make后端工作。我的报价表大约有1000行。我正在尝试使用以下查询更新某些行。

$randomnumbershare = (rand(10,50));
    $randomnumberlike = (rand(10,50));
$results = mysqli_query($mysqli,"UPDATE tbl_quotes SET qu_status=0, qu_like=$randomnumberlike,qu_share=$randomnumbershare,qu_favorite=0, qu_time=Now() ORDER BY _quid ASC ");

我希望将qu_like和qu_share设置为10到50之间的随机数。它工作正常,但只有一个问题是它在所有行中设置相同的数字,而我想在所有行中使用不同的数字。任何人都可以建议我怎么做?

由于

1 个答案:

答案 0 :(得分:0)

问题是你没有where子句,这意味着更新将更新表中的所有行,如果你想要在for或while语句中进行更新所需的不同值重复更新并添加一个where子句,该子句匹配每个cicle上表的每个id。

现在你有了这个:

$randomnumbershare = (rand(10,50));
$randomnumberlike = (rand(10,50));
$results = mysqli_query($mysqli,"UPDATE tbl_quotes SET qu_status=0, qu_like=$randomnumberlike,qu_share=$randomnumbershare,qu_favorite=0, qu_time=Now() ORDER BY _quid ASC ");

但你需要这样的东西:

如果您的数字ID从1到1000,则可以执行类似

的操作
for ($x = 1; $x <= 1000; $x++) 
{
    $randomnumbershare = (rand(10,50));
    $randomnumberlike = (rand(10,50));
    $results = mysqli_query($mysqli,"UPDATE tbl_quotes SET qu_status=0, qu_like=$randomnumberlike,qu_share=$randomnumbershare,qu_favorite=0, qu_time=Now() where id=$x ORDER BY _quid ASC ");
} 

该代码执行1000次更新,对表中的每一行进行一次更新,现在如果你的varchar id比数字序列更复杂,你需要先添加一个查询,然后才能将id存入一个数组,如:

$sql = mysql_query("select id from table_name");
$tableinfo = array();

foreach ($tableinfo as $tableid) 
{
    $randomnumbershare = (rand(10,50));
    $randomnumberlike = (rand(10,50));
    $results = mysqli_query($mysqli,"UPDATE tbl_quotes SET qu_status=0, qu_like=$randomnumberlike,qu_share=$randomnumbershare,qu_favorite=0, qu_time=Now() where id=$tableid[id] ORDER BY _quid ASC ");
}

对于n行思考,您可以执行从1到x的序列:

$sql = mysql_query("select id from table_name");

$num_rows = mysql_num_rows($sql);

for ($x = 1; $x <= $num_rows; $x++) 
{
    $randomnumbershare = (rand(10,50));
    $randomnumberlike = (rand(10,50));
    $results = mysqli_query($mysqli,"UPDATE tbl_quotes SET qu_status=0, qu_like=$randomnumberlike,qu_share=$randomnumbershare,qu_favorite=0, qu_time=Now() where id=$x ORDER BY _quid ASC ");
}