개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.28 11:32

mysqli_stmt::attr_set 함수 사용에 대한 도움을 요청합니다.

목록
  • GooglePlay매니아 3일 전 2025.03.28 11:32
  • 9
    1
제가 hiện제한 mysql query를 수행할 때, mysqli_stmt::attr_set 함수를 사용하여 query의 결과를 캐시에 저장하려고 하는데요.
어떻게 mysqli_stmt::attr_set 함수를 사용하여 query의 결과를 캐시에 저장할 수 있는지 알려주세요.

제가 현재 사용 중인 코드는 아래와 같습니다.
php

$stmt = $mysqli->prepare("SELECT * FROM 테이블명");

$stmt->attr_set(MYSQLI_STMT_ATTR_USE_RESULT, 1);

$stmt->execute();

$result = $stmt->get_result();


이 코드는 query의 결과를 캐시에 저장하는 것처럼 보이지만, 실제로 캐시에 저장되지 않습니다.
어떻게 하면 mysqli_stmt::attr_set 함수를 사용하여 query의 결과를 캐시에 저장할 수 있을까요?

또한, mysqli_stmt::attr_set 함수의 사용 가능한 속성은 무엇이며, 각 속성의 기능은 무엇인지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  3일 전



    mysqli_stmt::attr_set 함수는 MySQLi 확장 함수의 일부로, MySQLi_STMT_ATTR_USE_RESULT 속성을 사용하여 쿼리의 결과를 캐시에 저장할 수 있습니다. 하지만, 실제로 캐시에 저장되는 것은 아니며, MySQLi 확장 함수가 쿼리의 결과를 메모리에 저장하는 것에 불과합니다.

    MySQLi_STMT_ATTR_USE_RESULT 속성을 사용하여 쿼리의 결과를 캐시에 저장하려면, MySQLi_STMT_ATTR_BUFFER_RESULT 속성을 함께 사용해야 합니다. MySQLi_STMT_ATTR_BUFFER_RESULT 속성은 쿼리의 결과를 메모리에 저장하고, MySQLi_STMT_ATTR_USE_RESULT 속성은 결과를 캐시에 저장합니다.

    다음은 예제 코드입니다.

    #hostingforum.kr
    php
    
    $stmt = $mysqli->prepare("SELECT * FROM 테이블명");
    
    $stmt->attr_set(MYSQLI_STMT_ATTR_BUFFER_RESULT, 1);
    
    $stmt->attr_set(MYSQLI_STMT_ATTR_USE_RESULT, 1);
    
    $stmt->execute();
    
    $result = $stmt->get_result();
    
    


    mysqli_stmt::attr_set 함수의 사용 가능한 속성은 다음과 같습니다.

    - MYSQLI_STMT_ATTR_CURSOR_TYPE: 쿼리의 결과를 커서로 반환할지 여부를 지정합니다.
    - MYSQLI_STMT_ATTR_CURSOR_NAME: 커서의 이름을 지정합니다.
    - MYSQLI_STMT_ATTR_USE_RESULT: 쿼리의 결과를 캐시에 저장할지 여부를 지정합니다.
    - MYSQLI_STMT_ATTR_BUFFER_RESULT: 쿼리의 결과를 메모리에 저장할지 여부를 지정합니다.
    - MYSQLI_STMT_ATTR_STATIC_CURSOR: 쿼리의 결과를 정적 커서로 반환할지 여부를 지정합니다.
    - MYSQLI_STMT_ATTR_CURSOR_FLUSH: 커서를 초기화할지 여부를 지정합니다.
    - MYSQLI_STMT_ATTR_CURSOR_SCROLL: 커서를 스크롤할지 여부를 지정합니다.
    - MYSQLI_STMT_ATTR_CURSOR_OFFSET: 커서의 오프셋을 지정합니다.

    각 속성의 기능은 다음과 같습니다.

    - MYSQLI_STMT_ATTR_CURSOR_TYPE: 쿼리의 결과를 커서로 반환할 때, 커서의 타입을 지정합니다. 기본값은 MYSQLI_CURSOR_TYPE_READ_ONLY입니다.
    - MYSQLI_STMT_ATTR_CURSOR_NAME: 커서의 이름을 지정합니다. 기본값은 NULL입니다.
    - MYSQLI_STMT_ATTR_USE_RESULT: 쿼리의 결과를 캐시에 저장할 때, 캐시를 사용할지 여부를 지정합니다. 기본값은 0입니다.
    - MYSQLI_STMT_ATTR_BUFFER_RESULT: 쿼리의 결과를 메모리에 저장할 때, 메모리를 사용할지 여부를 지정합니다. 기본값은 0입니다.
    - MYSQLI_STMT_ATTR_STATIC_CURSOR: 쿼리의 결과를 정적 커서로 반환할 때, 정적 커서를 사용할지 여부를 지정합니다. 기본값은 0입니다.
    - MYSQLI_STMT_ATTR_CURSOR_FLUSH: 커서를 초기화할 때, 커서를 초기화할지 여부를 지정합니다. 기본값은 0입니다.
    - MYSQLI_STMT_ATTR_CURSOR_SCROLL: 커서를 스크롤할 때, 커서를 스크롤할지 여부를 지정합니다. 기본값은 0입니다.
    - MYSQLI_STMT_ATTR_CURSOR_OFFSET: 커서의 오프셋을 지정합니다. 기본값은 0입니다.

    2025-03-28 11:33

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 8,016건 / 24 페이지

검색

게시물 검색