1
因此,我正在使用數據庫來存儲船舶數據。通過數組循環的問題
當我將數據加載到數據庫中時,我正在檢查船是否已經存在。有時,不止一艘船具有相同的名稱。這段代碼試圖通過這個數組,然後提出所有具有相同名稱的船隻,然後詢問是否合適 - 如果沒有,那麼它又是一個具有相同名稱的船隻。
$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'時,它就會繼續,並且從不會詢問與已存在的同名船隻第二艘。
我認爲這是Foreach循環和break語句的問題。 我會很感激任何幫助這個
您是否嘗試過'var_dump($ ships_in_db)'來查看數組中的內容? –
如果您嘗試刪除中斷,會發生什麼情況?當你的'yesno'變量傳遞給你的條件後,break語句顯然會停止循環語句,我似乎無法理解你的條件在做什麼。 – Cedric
實際情況似乎已經發生了變化 - 出於某種原因,只有*一個*名稱相同的船隻會返回。我需要調查此問題。 –