问题描述
我刚刚学习了 for 循环和其他东西,并成功地解决了一个 FizzBuzz 问题,我当前的代码是这样的:
<?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 链接的 PHP 和 MysqLi 来解决 FizzBuzz 问题。
顺便说一句,我没有使用任何准备好的语句和东西,因为我不擅长它们,而且这只是一个宠物项目,所以没有安全问题。
所以我做了这样的事情,但最终没有奏效:
$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
添加到您的查询中,以便按排序返回行。