개발자 Q&A

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

2025.08.12 06:07

mysqli::query 함수에 대한 질문

목록
  • 스레드마스터 9시간 전 2025.08.12 06:07 새글
  • 5
    1
제가 mysqli::query 함수를 사용하여 데이터베이스에 쿼리를 실행할 때, 다음과 같은 오류 메시지를 받았습니다.

`mysqli::query() expects parameter 1 to be string, array given`

제가 쿼리를 실행할 때 사용한 코드는 다음과 같습니다.

php

$query = array('SELECT * FROM 테이블명');

$result = mysqli::query($query);



쿼리가 배열 형태로 넘어가는 것을 막고, 문자열 형태로 넘겨야 하는 이유가 무엇이며, 어떻게 수정해야 하는지 알려주시겠습니까?

    댓글목록

    profile_image
    나우호스팅  9시간 전



    mysqli::query 함수는 쿼리를 실행할 때 문자열 형태로 쿼리를 넘겨야 합니다.

    배열 형태로 쿼리를 넘기면 오류가 발생하는 이유는 PHP에서 함수의 매개변수 타입을 지정할 수 있기 때문입니다. mysqli::query 함수의 매개변수 타입은 문자열(string) 타입이기 때문에 배열(array) 타입을 넘기면 오류가 발생합니다.

    쿼리를 문자열 형태로 넘기려면 다음과 같이 수정해야 합니다.

    #hostingforum.kr
    php
    
    $query = 'SELECT * FROM 테이블명';
    
    $result = mysqli::query($query);
    
    


    또는

    #hostingforum.kr
    php
    
    $query = "SELECT * FROM 테이블명";
    
    $result = mysqli::query($query);
    
    


    또는

    #hostingforum.kr
    php
    
    $query = sprintf("SELECT * FROM 테이블명");
    
    $result = mysqli::query($query);
    
    


    sprintf 함수를 사용하면 쿼리문에 변수를 포함할 수 있습니다.

    쿼리문에 변수를 포함할 때는 주의해야 합니다. 변수를 포함할 때는 쿼리문에 변수를 포함할 때는 주의해야 합니다. 변수를 포함할 때는 쿼리문에 변수를 포함할 때는 주의해야 합니다.

    예를 들어, 쿼리문에 변수를 포함할 때는 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $username = '사용자 이름';
    
    $query = sprintf("SELECT * FROM 테이블명 WHERE 사용자 이름 = '%s'", $username);
    
    $result = mysqli::query($query);
    
    


    위의 예제에서 사용자 이름 변수를 포함할 때는 주의해야 합니다. 사용자 이름 변수가 포함된 쿼리문은 SQL 인젝션 공격에 취약할 수 있습니다.

    SQL 인젝션 공격을 방지하려면 쿼리문에 변수를 포함할 때는 prepare 문을 사용해야 합니다.

    #hostingforum.kr
    php
    
    $username = '사용자 이름';
    
    $stmt = mysqli_prepare($link, "SELECT * FROM 테이블명 WHERE 사용자 이름 = ?");
    
    mysqli_stmt_bind_param($stmt, 's', $username);
    
    mysqli_stmt_execute($stmt);
    
    $result = mysqli_stmt_get_result($stmt);
    
    


    위의 예제에서 prepare 문을 사용하면 쿼리문에 변수를 포함할 때 SQL 인젝션 공격을 방지할 수 있습니다.

    2025-08-12 06:08

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

검색

게시물 검색