Оператор PHP IF возвращает истинное значение только один раз в цикле while

0

это мои первые шаги в PHP, потому что я не использую его в своей работе. Я хотел бы подготовить форму, которая добавит данные в таблицы базы данных. Я подготовил этот фрагмент кода:

<?php 

require "init.php";

$marina_id=$_POST["marina_id"];
$b_cor=$_POST["b_cor"];
$size=$_POST["size"];
$available_place=$_POST["available_place"];
$l_cor=$_POST["l_cor"];
$is_open=$_POST["is_open"];
$description=$_POST["description"];

$sql= "insert into marinas (marina_id, b_cor, l_cor, size, available_place, is_open, description) values('$marina_id', '$b_cor', '$l_cor', '$size', '$available_place', '$is_open', '$description');";
if (mysqli_query($con, $sql))
{
  echo "values were added";
} else {
  echo "values were not added";
}
$count = 0;
while ($count<$size)
{
    if ($count<$available_place) {
        $isavailable = 1;
        $accesscode = "";
    } else {
        $isavailable = 0;
        $accesscode = "abcdefgh";
    }
    $dock_id=(string)$marina_id."0".(string)$count;
    $nullObject="";
    $sql2= "insert into places (
        place_id, 
        b_cor, l_cor, 
        is_available, 
        plan, 
        depth, 
        width, 
        length, 
        description, 
        marina_id, 
        access_code, 
        reserved_from, 
        reserved_to, 
        last_update) values (

        '$dock_id', 
        '$b_cor', 
        '$l_cor', 
        '$isavailable',
        '$nullObject', 
        '$nullObject', 
        '$nullObject', 
        '$nullObject', 
        '$nullObject', 
        '$marina_id', 
        '$accesscode', 
        '$nullObject',
        '$nullObject', 
        '$nullObject');";
    if (mysqli_query($con, $sql2)) //$con comes from init.php
    {
    echo "complete.";
    } else {
    echo "something wrong with data.";
    }
    $count = $count+1;
}


 ?>

Моя идея состояла в том, чтобы вставить строку с данными в таблицу marinas и на основе ее значения "size" добавить дополнительные строки с данными в таблицу мест столько раз, сколько значение размера. Я использовал цикл while, но мой оператор IF для $ sql2 возвращает true только один раз, и я не знаю, почему это так. Для меня логика кода выглядит нормально, и некоторые данные были добавлены. Есть ли какие-либо ограничения в PHP для решения, подобного моему?

Теги:
insert-into

1 ответ

1
Лучший ответ

Проверьте, является ли place_id ключом автоинкремента. Возможно, это может быть ложным, потому что это нарушает уникальность ключа.

  • 0
    Если это так, то почему $ dock_id = (строка) $ marina_id. "0". (Строка) $ count; не делает значение place_id уникальным? Разве это не правильный способ связать целочисленное значение со строкой?
  • 0
    Другой способ - заключить целое число в кавычки: $ foo = 5; $ foo = "$ foo" поставить эхо для печати запроса
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню