循环遍历数组的问题

时间:2017-09-05 02:19:01

标签: php sql database loops foreach

因此,我使用数据库存储船舶数据。

当我将数据加载到数据库中时,我正在检查该船是否已经存在。有时,不止一艘船具有相同的名称。这段代码试图通过数组,拔出所有相同名称的船只,然后反过来询问是否正确 - 如果没有,那么它又是另一个同名的。

 $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语句存在问题。 我很感激任何帮助

1 个答案:

答案 0 :(得分:0)

我已经发现了问题。

由于循环 - 我没有重置“Ship_Id”变量,这意味着第二次或第n次具有相同名称的船只出现时,未创建新船。

现在我已经解决了这个问题。所以问题不在于这个代码 - 它是其他代码。