편집 기록

편집 기록
  • 프로필 엽토군님의 편집
    날짜2020.08.20

    php 다중 쿼리 select 사용해서 배열에 넣는법


    테이블이

    barcode(barcode, food_code, company_code)
    food(food_code, food_name)
    company(company_code, company_name)
    

    이렇게 있는데 처음엔 join을 써서 하려니까 시간이 너무 걸리더라구요...

    그래서 select를 3번 써서 빠르게 하려는데 php에서 다중 쿼리 select 쓰는 방법 검색해서 해보는데 원하는 결과가 안 나옵니다...

    첫번째 쿼리문은 바코드를 입력하면 barcode.food_code를 거쳐 food.food_name을 가져오려고 합니다.

    두번째 쿼리문은 바코드만 가져옵니다.

    세번째 쿼리문은 바코드를 입력하면 barcode.company_code를 거쳐 company.company_name을 가져옵니다.

    최종적으로 제가 원하는 결과는 url에 바코드를 하나 입력하면 그 바코드에 맞는 정보들을 가져와 배열에 넣는겁니다. 다중 쿼리 select 어떻게 써야 배열에 들어가나요?

    밑에는 제가 짰던 php문입니다.

    <?php
    require_once 'conn.php';
    
    if (isset($_GET['barcode'])) {
        $barcode = $_GET['barcode'];
        $query = "select FOOD_NAME FROM food WHERE FOOD_CODE=(select FOOD_CODE FROM barcode WHERE BARCODE=(select BARCODE FROM barcode WHERE BARCODE='$barcode')); ";
        $query .= "select BARCODE FROM barcode WHERE BARCODE='$barcode'; ";
        $query .= "select COMPANY_NAME FROM company WHERE COMPANY_CODE=(select COMPANY_CODE FROM barcode WHERE BARCODE=(select BARCODE FROM barcode WHERE BARCODE='$barcode'));";
        $response = [];
    
        if (mysqli_multi_query($conn, $query)) {
            do {
                if ($result = mysqli_store_result($conn)) {
                    while ($row = mysqli_fetch_row($result)) {
                        array_push(
                            $response, [
                                'barcode' => $row['BARCODE'],
                                'food_name' => $row['FOOD_NAME'],
                                'company_name' => $row['COMPANY_NAME']
                            ]
                        );
                    }
                    mysqli_free_result($result);
                }
            } while (mysqli_next_result($conn));
        }
        echo json_encode($response);
    }
    
    mysqli_close($conn);
    
  • 프로필 알 수 없는 사용자님의 편집
    날짜2020.08.19

    php 다중 쿼리 select 사용해서 배열에 넣는법


    테이블이 barcode(barcode, food_code, company_code), food(food_code, food_name), company(company_code, company_name) 이렇게 있는데 처음엔 join을 써서 하려니까 시간이 너무 걸리더라구요...

    그래서 select를 3번 써서 빠르게 하려는데 php에서 다중 쿼리 select 쓰는 방법 검색해서 해보는데 원하는 결과가 안 나옵니다...

    첫번째 쿼리문은 바코드를 입력하면 barcode의 food_code를 거쳐 food 테이블의 food_name을 가져오려고 합니다.

    두번째 쿼리문은 바코드만 가져옵니다.

    세번째 쿼리문은 바코드를 입력하면 barcode의 company_code를 거쳐 company 테이블의 company_name을 가져옵니다.

    최종적으로 제가 원하는 결과는 url에 바코드를 하나 입력하면 그 바코드에 맞는 정보들을 가져와 배열에 넣는겁니다. 다중 쿼리 select 어떻게 써야 배열에 들어가나요?

    밑에는 제가 짰던 php문입니다.

    <?php
    
    require_once 'conn.php';
    
    if(isset($_GET['barcode'])) {
     $barcode = $_GET['barcode'];
     $query = "select FOOD_NAME FROM food WHERE FOOD_CODE=(select FOOD_CODE FROM barcode WHERE BARCODE=(select BARCODE FROM barcode WHERE BARCODE='$barcode')); ";
     $query .= "select BARCODE FROM barcode WHERE BARCODE='$barcode'; ";
     $query .= "select COMPANY_NAME FROM company WHERE COMPANY_CODE=(select COMPANY_CODE FROM barcode WHERE BARCODE=(select BARCODE FROM barcode WHERE BARCODE='$barcode'));";
     $response = array();
    
    if(mysqli_multi_query($conn, $query)) {
     do {
      if($result=mysqli_store_result($conn)) {
       while($row=mysqli_fetch_row($result)) {
        array_push($response,
          array(
             'barcode'=>$row['BARCODE'],
             'food_name'=>$row['FOOD_NAME'],
             'company_name'=>$row['COMPANY_NAME'])
          );
       }
        mysqli_free_result($result);
      }
     }
    while(mysqli_next_result($conn));
    }
    echo json_encode($response);
    }
    
    mysqli_close($conn);
    
    ?>