因此,我使用数据库存储船舶数据。
当我将数据加载到数据库中时,我正在检查该船是否已经存在。有时,不止一艘船具有相同的名称。这段代码试图通过数组,拔出所有相同名称的船只,然后反过来询问是否正确 - 如果没有,那么它又是另一个同名的。
$sql = "SELECT Ship_Primary_Key, ship_original_rate, Ship_Launch_Year from Ships WHERE Ship_Name = '" . $shipname . "'";
$result = $conn->query ($sql);
if ($result-> num_rows > 0) //Does the ship name already exist in the DB? {
$ships_in_db = mysqli_fetch_all ($result,MYSQLI_ASSOC);
foreach ($ships_in_db as $row) {
echo "new record is " . $shipname . " as a " . $shiprate . ". Records already include " . $shipname . ", launched " . $row["Ship_Launch_Year"] . " as a " . $row ['ship_original_ra
$yesno = trim(fread(STDIN,5));
if ($yesno == "y" || $yesno == "yes") {
//ship already exists in the DB. Get the Key
echo $shipname . " is not new to the database and the key is " . $row["Ship_Primary_Key"] . "\n";
$shipkey = $row["Ship_Primary_Key"];
break 1;
}
}
//if you get through the loop of ships without assigning a primary key, ship is new
if (empty($shipkey)) {
$shipkey = write_ship_to_DB($shipname,$shiprate,$launchyear,$launchname,$conn);
}
}
所以问题是,我知道我在第一组数据中有至少三个具有相同名称的船舶(不同)。问题是,它只询问第一个问题。当我提出' n'时,它就会继续,并且永远不会询问具有相同名称的 second 船。
我认为Foreach循环和break语句存在问题。 我很感激任何帮助
答案 0 :(得分:0)
我已经发现了问题。
由于循环 - 我没有重置“Ship_Id”变量,这意味着第二次或第n次具有相同名称的船只出现时,未创建新船。
现在我已经解决了这个问题。所以问题不在于这个代码 - 它是其他代码。