개발자 Q&A

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

2025.07.07 04:50

SQLite3::querySingle 사용 시 오류 발생

목록
  • HTTP전문가 14일 전 2025.07.07 04:50
  • 51
    1
제가 최근에 SQLite3::querySingle 함수를 사용하여 데이터베이스에서 데이터를 조회하려고 하는데, 오류가 발생했습니다.

querySingle 함수의 문법은 다음과 같습니다.
php

$result = $db->querySingle('SELECT * FROM 테이블명');


하지만, 테이블이 여러 개 존재할 때, 특정 테이블에서 특정 행을 조회하고 싶을 때 어떻게 해야할까요?

예를 들어, 테이블이 3개 존재하고, '테이블명1'에서 'id = 1'인 행을 조회하고 싶을 때 어떻게 해야할까요?

php

$result = $db->querySingle('SELECT * FROM 테이블명1 WHERE id = 1');


이 경우, 테이블명이 '테이블명1'이 아니면 오류가 발생합니다.

이와 같은 경우, querySingle 함수를 사용하여 특정 테이블에서 특정 행을 조회하는 방법이 궁금합니다.

혹시, 테이블명이 동적으로 변할 수 있는 경우, querySingle 함수를 사용하여 데이터를 조회하는 방법이 있을까요?

제가 생각한 방법은 다음과 같습니다.
php

$tableName = '테이블명1';

$result = $db->querySingle("SELECT * FROM $tableName WHERE id = 1");


이 경우, 테이블명이 동적으로 변할 수 있습니다.

하지만, 이 방법은 SQL injection 공격에 취약합니다.

혹시, querySingle 함수를 사용하여 데이터를 조회하는 방법이 있을까요?

혹시, 테이블명이 동적으로 변할 수 있는 경우, querySingle 함수를 사용하여 데이터를 조회하는 방법이 있을까요?

혹시, SQL injection 공격에 취약하지 않은 방법이 있을까요?

제가 생각한 방법은 다음과 같습니다.
php

$tableName = '테이블명1';

$result = $db->querySingle("SELECT * FROM $tableName WHERE id = 1", [$tableName]);


이 경우, 테이블명이 동적으로 변할 수 있습니다.

하지만, 이 방법은 querySingle 함수의 문법과 다릅니다.

혹시, querySingle 함수의 문법과 맞는 방법이 있을

    댓글목록

    profile_image
    나우호스팅  14일 전



    querySingle 함수를 사용하여 특정 테이블에서 특정 행을 조회하는 방법은 다음과 같습니다.

    1. 테이블명이 고정되어 있을 때:

    #hostingforum.kr
    php
    
    $result = $db->querySingle('SELECT * FROM 테이블명1 WHERE id = 1');
    
    

    2. 테이블명이 동적으로 변할 수 있는 경우:
    #hostingforum.kr
    php
    
    $tableName = '테이블명1';
    
    $result = $db->querySingle("SELECT * FROM $tableName WHERE id = 1");
    
    

    이 방법은 SQL injection 공격에 취약합니다.

    SQL injection 공격에 취약하지 않은 방법은 다음과 같습니다.

    #hostingforum.kr
    php
    
    $tableName = '테이블명1';
    
    $stmt = $db->prepare("SELECT * FROM $tableName WHERE id = :id");
    
    $stmt->bindParam(':id', 1);
    
    $result = $stmt->execute();
    
    

    또는

    #hostingforum.kr
    php
    
    $tableName = '테이블명1';
    
    $result = $db->querySingle("SELECT * FROM $tableName WHERE id = ?", [1]);
    
    

    이 방법은 querySingle 함수의 문법과 맞으며 SQL injection 공격에 취약하지 않습니다.

    2025-07-07 04:51

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

검색

게시물 검색