php - 更新 MySQL 数据库时停止 PHP 循环
问题描述
我正在为股票市场模拟器创建一个基本的主菜单,其中公司的价格将定期更新。为了测试的目的,我需要做一个循环,在网站上显示股票的价格五次(网站自动更新而不刷新),同时更新数据库。
我已经成功编写了一些代码,这些代码既可以用当前股价更新数据库,也可以更新网站。但是,当我尝试包含一个循环时,我遇到了一个问题。我已经包含了一个循环来迭代五次,但我遇到的问题是即使在五次尝试之后代码也会继续迭代。
PHP:
<?php
$conn = mysqli_connect("localhost", "root", "", "prices");
if ($conn->connect_error)
{
die("Connection error: ". $conn->connect_error);
}
$result = $conn->query("SELECT `price` FROM `priceTable` WHERE `company` = 'Bawden'");
$x = 0;
if ($result->num_rows > 0)
{
while ($row = $result->fetch_assoc())
{
echo $row['price'];
echo '<br><br>';
echo $x;
if ($x < 5)
{
$random = (rand(3300, 3700) / 100);
$sql = $conn->query("UPDATE `priceTABLE` SET `price` = '$random' WHERE `company` = 'Bawden'");
$x++;
}
}
}
?>
上面的代码将显示在带有 Javascript 代码的单独文档中,如果需要,我可以在原始帖子中发布此代码,但我最初选择不这样做,因为我认为这是唯一的 PHP 问题。我选择显示 $x 以查看该值是否会增加。但是,在运行时,$x 的值将保持为 0。
我的预期结果是,在网站上,只会有五次不同的更新,而在数据库中,数据库只会更新五次。
但是,我的实际结果是网站和数据库都在不断更新,五次后都没有停止。
解决方案
是什么让您认为循环应该在 5 次迭代后停止?
您需要$x<5
在while ($row = $result->fetch_assoc())
按照您的评论进行编辑
您最初编写的内容类似于loop hundreds of times if need be and do something in the first 5 occurrences (starting loop 6, keep looping but do nothing)
.
现在对于您评论的第二部分,我不确定您的意思。
我在您的代码中看到的是:
- 选择所有价格
company = 'Bawden'
- 在所有记录上使用相同的随机值更新所有价格5 次(循环)。
company = 'Bawden'
没有足够的信息可以确定,但我认为这没有意义:一方面,你除了在下面有几条记录company = 'Bawden
(=你创建循环的原因),另一方面,你的更新感觉就像是写的假设只有 1 条记录...
您是否遗漏了表格中的价格日期之类的内容?什么是主键priceTable
?
尝试发布有关您的表格的更多技术细节(定义,数据样本),否则进一步提供帮助会很复杂。
推荐阅读
- html - HTML 下拉列表
- drupal - 覆盖/挂钩 VBO 操作已处理的消息
- python - 如何在 python 套接字中同时发送和接收?
- reactjs - 模块构建失败(来自./node_modules/eslint-loader/dist/cjs.js):TypeError:无法读取未定义的属性(读取'getFormatter')
- windows - PostgreSQL 日志轮换大小达到文件限制
- .net-core - 在 EF 核心中列出迁移及其上下文名称
- python - arcgis 附加托管要素图层。“作业失败”错误
- aws-iot - AWS IoT ) OpenSSL 网络失败
- php - Laravel 框架中的更新正在返回一条新记录
- postgresql - now() 在 postgresql 中创建视图后更改为静态时间戳