如何使用 PHP 和 MySQL 解决 FizzBu​​zz 问题?

问题描述

我刚刚学习了 for 循环和其他东西,并成功地解决一个 FizzBu​​zz 问题,我当前的代码是这样的:

<?PHP

for ($i = 1; $i <= 100; $i++) {
  if ($i % 15 == 0) {
    echo 'FizzBuzz<br>';
  } elseif ($i % 3 == 0) {
    echo 'Fizz<br>';
  } elseif ($i % 5 == 0) {
    echo 'Buzz<br>';
  } else {
    echo $i . '<br>';
  }
}

?>

现在我只是想知道如果我们有一个包含 100 行的 MysqL 表,其中包含 1 - 100 的数字会怎样。

CREATE TABLE numbers_from_one_to_hundred (
  id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,numbers INT(11) NOT NULL
);

现在我想用与 numbers_from_one_to_hundred 链接PHPMysqLi 来解决 FizzBu​​zz 问题。

顺便说一句,我没有使用任何准备好的语句和东西,因为我不擅长它们,而且这只是一个宠物项目,所以没有安全问题。

所以我做了这样的事情,但最终没有奏效:

$query = "SELECT * FROM `numbers_from_one_to_hundred`";

$results = MysqLi_query($con,$query);

while ($row = MysqLi_fetch_array($results)) {
  $numbers = $row['numbers'];
  for ($i = 1; $i <= $numbers; $i++) {
    if ($i % 15 == 0) {
      echo 'FizzBuzz<br>';
    } elseif ($i % 3 == 0) {
      echo 'Fizz<br>';
    } elseif ($i % 5 == 0) {
      echo 'Buzz<br>';
    } else {
      echo $i . '<br>';
    }
  }
}

有人可以解释一下这有什么问题吗?它真的根本不输出任何东西,但是当我用结果尝试 print_r 时,它似乎确实给出了结果,所以我的逻辑可能有问题,我这样做完全错误吗?有人可以向我解释这应该怎么做吗?

解决方法

order by numbers 添加到您的查询中,以便按排序返回行。