我是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之间的随机数。它工作正常,但只有一个问题是它在所有行中设置相同的数字,而我想在所有行中使用不同的数字。任何人都可以建议我怎么做?
由于
答案 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 ");
}