php - 嵌套的while循环在第一次迭代PHP后停止
问题描述
我对此很陌生,所以我可能缺少一些非常基本的东西,但我正在尝试编写一些 PHP 脚本。我想规范化我的主数据表,这是关于二手车、品牌、型号、价格等的信息。所以我有另一个表,其中包含所有独特的汽车制造商,它在我的脚本中存储了makeName
一个唯一的 id ,makeId
我连接到数据库,从主表中读取所有数据,将其作为 SQL 查询运行,然后将其存储为变量。我对make
桌子做同样的事情。
然后我尝试运行一个嵌套的 while 循环,将Manufacturer
列中主表中的所有字符串替换makeId
为表中的字符串,make
以便我可以链接这两个表。它适用于一次迭代然后停止,我尝试在其中一个和两个while循环!==FALSE
之后添加fetch_assoc
,但这给了我我认为的无限循环。这是我的代码...
<?php
include("conn.php");
$sqlAll= "SELECT * FROM carData";
$carDataResult = $conn->query($sqlAll);
if(!$carDataResult){
echo $conn->error;
die();
}
$sqlMake = "SELECT * FROM 000make";
$makeResult = $conn->query($sqlMake);
if(!$makeResult){
echo $conn->error;
die();
}
while ( $make =$makeResult-> fetch_assoc()){
$makeID = $make['makeId'];
$makeName = $make['makeName'];
while ($row = $carDataResult->fetch_assoc()){
$sqlUpdate="UPDATE carData SET Manufacturer = '$makeID'
WHERE Manufacturer='$makeName' AND Manufacturer IS NOT NULL";
$res = $conn->query($sqlUpdate);
if(!$res){
echo $conn->error;
die();
}
}
}
?>
解决方案
在我发布问题后大约 10 分钟,在盯着这个问题看了一整天之后,我意识到我根本不需要嵌套循环并编写了下面的代码,虽然很笨重,但它解决了问题,但我更喜欢你的解决方案@TangentiallyPerpendicular ...感谢您的帮助...
while ($make =$makeResult-> fetch_assoc()){
$makeID = $make['makeId'];
$makeName = $make['makeName'];
$sqlUpdate="UPDATE carData SET Manufacturer = '$makeID'
WHERE Manufacturer='$makeName' AND Manufacturer IS NOT NULL";
$res = $conn->query($sqlUpdate);
if(!$res){
echo $conn->error;
die();
}
}
推荐阅读
- c++ - c++字符串常量和静态初始化顺序惨败
- c# - 如果 materialId 和 depotId 列相同,我想总结我的 IncomingProduct 表的金额列。最后我想减去这些。MVC C#
- amazon-web-services - 通过使用 Terraform 提供 AWS 区域,在现有 VPC 中预置 EC2
- python - 如何加快解析json和写入数据库的速度?
- php - 没有权限。无法将文件写入 COM4 的打印机
- ssl - JMX 通过 SSL 连接到 Gemfire
- python - I want to read from a file and scrape each URL
- sql - 识别函数何时在 SQL 查询或 PL/SQL 过程中执行
- c# - 如何从 API 中获取值?
- c# - 如何做一个滚动重复的游戏对象