2017-12-21 14 views
0

이것은 내 작업에서 사용하지 않기 때문에 PHP에서의 첫 번째 단계입니다. 데이터베이스 테이블에 데이터를 추가 할 양식을 준비하고 싶습니다.While 루프에서 PHP IF 문은 true 값을 한 번만 반환합니다.

<?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; 
} 


?> 

내 생각의 크기 값이 같은 데이터 장소에 테이블로 많은 시간과 여분의 행을 추가 선착장 테이블에 데이터 행을 삽입하는 것이었다하고 "크기"값을 기반으로 : 나는이 코드 조각을 준비 . while 루프를 사용했지만 $ sql2에 대한 IF 문은 한 번만 true를 반환하고 왜 그런지 알지 못합니다. 나에게 코드 로직은 괜찮은 것처럼 보이고 일부 데이터가 추가되었다. 광산과 같은 솔루션에 대한 PHP의 제한 사항이 있습니까?

답변

1

place_id가 자동 증가 키인지 확인하십시오. 어쩌면 키의 고유성을 위반하기 때문에 거짓 일 수 있습니다.

+0

* $ dock_id = (string) $ marina_id. "0". (string) $ count; *가 place_id 값을 고유하지 않게 만드는 이유는 무엇입니까? 정수 값과 문자열을 연결하는 올바른 방법이 아닌가요? – Darek

+0

또 다른 방법은 정수를 따옴표로 묶는 것입니다. $ foo = 5; $ foo = "$ foo" echo를 입력하여 쿼리를 인쇄하십시오. –

+0

Francesco 정말 고마워요. 당신이 말했듯이, 독특한 열쇠에 문제가있었습니다. DB 구성 중에 실수로 place_id 대신 marina_id에 'unique'을 설정했습니다. – Darek