2014-10-24 3 views
0

내 페이지에서 이름, 크기, 비용 등으로 새 음식 요리를 정의합니다. 아래에서 선택할 수있는 테이블이 있습니다. 이전에 정의 된 성분 목록 (또 다른 MySQL 테이블)은 접시에 지정되고 필요한 수량을 지정합니다.PHP 하나의 필드가 첫 번째 SQL 문에서 생성 된 AIl 데이터베이스 필드 인 MySQL 배열 삽입

첫 번째 부분에서는 제출시 서버 측에서 트리거를 사용하여 DishID이 자동으로 생성됩니다 (자동 증가). 이것은 접시 파트를 성공적으로 삽입합니다.

두 번째 부분은 넘어지는 부분입니다. 새 데이터베이스 DishID, IngIDVolume을 내 데이터베이스 테이블에 게시하려고하지만 DishID는 비워 둡니다. 나는 현재 Select Max 문을 사용하여 최신 레코드를 가져 오지만 이것이 이상적은 아닐지 모르지만 이것이 작동하지 않는 이유라고 생각하지 않습니다. 특정 문에 특정 ID를 쓰는 경우에도 공백이 반환됩니다. 그러므로 내 코드가 작성된 방식이어야합니다.

require_once('db_connect.php'); 

      $DishName = mysqli_real_escape_string($con, $_POST['DishName']); 
      $DishCatID = mysqli_real_escape_string($con, $_POST['DishCatID']); 
      $Serving = mysqli_real_escape_string($con, $_POST['Serving']); 
      $SRP = mysqli_real_escape_string($con, $_POST['SRP']); 
      $Method = mysqli_real_escape_string($con, $_POST['Method']); 
      $SourceID = mysqli_real_escape_string($con, $_POST['SourceID']); 

      $sql="INSERT INTO Dishes (DishName, DishCatID, Serving, SRP, Method, SourceID) 
        VALUES ('$DishName', '$DishCatID', '$Serving', '$SRP', '$Method', '$SourceID')"; 
      mysqli_query($con, $sql) or die(mysqli_error($con)); 

      $DishID = 'SELECT MAX(DishID) FROM Dishes'; 
         $result=mysqli_query($con, $DishID) or die ("Query to get DishID failed: ".mysqli_error($con)); 

      $array = array('$DishID'=>(mysql_query($GetDishID)),'$IngID'=>($_POST['IngID[]']),'$Volume'=>($_POST['Volume[]'])); 

      $values = array(); 
      foreach ($_POST['IngID'] as $i => $ingID) { 
       if (!empty($ingID)) { 
        $ingID = mysqli_real_escape_string($con, $ingID); 
        $volume = mysqli_real_escape_string($con, $_POST['Volume'][$i]); 
        $values[] = "('$DishID', '$ingID', '$volume')"; 
       } 
      } 
      if (!empty($values)) { 
       $sql2 = 'INSERT INTO DishIng (DishID, IngID, Volume) VALUES ' . implode(', ', $values); 
       mysqli_query($con, $sql2) or die(mysqli_error($con)); 
      } 


       require_once('db_disconnect.php'); 

내가 뭘 잘못하고 있니?

답변

0

체크 아웃 mysqli_insert_id 마지막 쿼리에서 사용 된 자동 생성 된 ID를 반환합니다.

$DishID = mysqli_insert_id($con); 
+0

'0'을 반환합니다. 어떻게 적용하겠습니까? 어쩌면 내가 잘못하고있는거야? – fernalonso

+0

DishID가 자동 증가 필드입니까? 그렇지 않은 경우 선택 쿼리를 수행해야합니다. 하지만 코드가 맞지 않습니다. '$ DishID'에 질의를 생성하고 결과를'$ result'에 저장합니다. 그러나 다음 줄에 배열을 만들 때 mysql_query ($ GetDishID)를 호출합니다. 당신은 mysqli를 사용하고 있었고 이제는 mysql을 호출하고 어디에도'$ GetDishID'를 설정하지 않습니다. – slapyo

0

당신은 당신이 당신의 초기 삽입 문 후 해당 데이터베이스 연결과는 바로 다음 일이 같은 mysqli_insert_id()를 통해 삽입 ID를 얻을 필요가있다. 그 모양은 다음과 같습니다 :

$sql="INSERT INTO Dishes (DishName, DishCatID, Serving, SRP, Method, SourceID) 
     VALUES ('$DishName', '$DishCatID', '$Serving', '$SRP', '$Method', '$SourceID')"; 
mysqli_query($con, $sql) or die(mysqli_error($con)); 
// get inserted row id 
$insertID = mysqli_insert_id($con); 

물론 이것은 요리 ID 필드가 자동 증가 필드라고 가정합니다.

mysqli으로 변경해야하는 코드에서 mysql_query() 함수 호출이 있습니다.