我有一个表(MySql),其中一列是-3到3之间的“值”。我想要做的是:
- 如果它的“值”是正数(在我的情况下为 1 到 3 - 负值将用于其他内容并且与此处无关),则从表中拉出一个随机行
- 如果“值”为 3,则仅显示该行。
- 如果“值”为 2,则显示该行,加上另一个“值”为 1 的随机行。
- 如果“值”为 1,则显示该行,再加上“值”为 2 的多行,或每行“值”为 1 的 2 行。
或者,换句话说,我需要列出行,直到它们的总值为 3 - 通过值为 3 的一行、值为 1 和 2(或 2 和 1)的两行或三行完成每个值为 1。
这是我所拥有的:
$query = "SELECT * FROM $usertable WHERE Value>0 ORDER BY RAND() LIMIT 1"; //from all positive Values, get one at random
$query2 = "SELECT * FROM $usertable WHERE Value BETWEEN 1 AND 2 ORDER BY RAND() LIMIT 1"; //from all Values between 1 and 2, get one at random
$query3 = "SELECT * FROM $usertable WHERE Value=1 ORDER BY RAND() LIMIT 1"; //from all Values equal to 1, get one at random
$result = mysql_query($query);
$result2 = mysql_query($query2);
$result3 = mysql_query($query3);
while($row = mysql_fetch_array($result))
{
echo $row['A'] . " " . $row['B'] . " " . $row['C'] . " " . $row['Value'];
echo "<br>";
}
while($row['Value']<3)
{
while($row2 = mysql_fetch_array($result2))
{
echo $row2['A'] . " " . $row2['B'] . " " . $row2['C'] . " " . $row2['Value'];
echo "<br>";
}
}
while($row['Value'] + $row2['Value']<3)
{
while($row3 = mysql_fetch_array($result3))
{
echo $row3['A'] . " " . $row3['B'] . " " . $row3['C'] . " " . $row3['Value'];
echo "<br>";
}
}
我尝试将 while 语句按不同的顺序排列,但我不断收到意外的 T_WHILE 错误。
我现在拥有它的方式,代码将运行并超时并出现以下错误:“致命错误:超过 30 秒的最大执行时间”并且它没有做我需要的事情(如果第一个,它仍然会提取结果“价值”是 3)。
谁能指出我做错了什么?必须有比我正在做的更好的方法来完成这个场景,但我只是没有看到它。有人可以指出我正确的方式吗?谢谢!