【问题标题】:How to do the FizzBuzz problem using PHP and MySQL?如何使用 PHP 和 MySQL 解决 FizzBu​​zz 问题?
【发布时间】:2020-12-31 07:22:09
【问题描述】:

我只是在学习 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>';
  }
}

?>

现在我想知道如果我们有一个 MySQL 表,其中包含 100 行,其中包含 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 相关联的 PHP 和 MySQLi 的 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 的结果时,它似乎确实给出了结果,所以我的逻辑可能有问题我做这一切完全错了吗?有人可以向我解释这应该怎么做吗?

【问题讨论】:

  • 如果您希望对行进行排序,则需要在查询中添加“按数字排序”。分配时是否需要将数字转换为 int ? “它根本不输出任何东西”没有帮助。然后至少给我们 print_r 输出。
  • @AllanWind 好的,我将添加 print_r 输出,是的,我确实希望对我的行进行排序,我会立即将其添加到我的查询中,不,我不一定需要将它们转换为 int 还是我?抱歉有点垃圾,我只是一个初学者。
  • @AllanWind 这里是 print_r 输出mysqli_result Object ( [current_field] =&gt; 0 [field_count] =&gt; 2 [lengths] =&gt; [num_rows] =&gt; 99 [type] =&gt; 0 )
  • 哦 @AllanWind 感谢使用 ORDER BY 关键字对其进行排序确实有效 感谢您的帮助 我想自己回答我的问题,以便其他人也可以得到帮助
  • 因为我不记得如何使用 for 解析结果。新年快乐

标签: php mysql for-loop fizzbuzz


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多