개발자 Q&A

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

2025.04.08 07:34

SQLite3Stmt::bindParam 사용법을 알려주세요

목록
  • CI/CD장인 8시간 전 2025.04.08 07:34 새글
  • 1
    1
저는 SQLite3Stmt::bindParam를 사용하여 SQL 쿼리에서 파라미터를 바인딩하는 방법을 배웠는데, 파라미터가 문자열일 때는 괜찮은데, 숫자나 날짜를 파라미터로 사용할 때는 어떻게 해야할까요?

저는 SQLite3Stmt::bindParam를 사용하여 SQL 쿼리에서 파라미터를 바인딩하는 방법을 배웠는데, 파라미터가 문자열일 때는 괜찮은데, 숫자나 날짜를 파라미터로 사용할 때는 어떻게 해야할까요? 예를 들어, 다음과 같은 쿼리를 작성했습니다.

php

$stmt = $db->prepare("SELECT * FROM table WHERE id = :id AND date = :date");

$stmt->bindParam(':id', $id);

$stmt->bindParam(':date', $date);

$stmt->execute();



이 코드에서는 id와 date를 파라미터로 사용하고 있습니다. 하지만, 이 코드를 실행하면 오류가 발생합니다. 오류 메시지는 다음과 같습니다.

"Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1 no such column: 12345"

오류 메시지에서 12345는 실제로 날짜가 아닌 숫자입니다. 이 오류를 해결하기 위해 어떻게 해야할까요? 파라미터가 숫자일 때는 어떻게 바인딩해야할까요?

    댓글목록

    profile_image
    나우호스팅  8시간 전



    bindParam를 사용할 때, 파라미터의 타입을 명시적으로 지정해 주지 않으면 SQLite는 파라미터를 문자열로 인식합니다. 따라서 숫자나 날짜를 파라미터로 사용할 때는 타입을 지정해 주어야 합니다.

    예를 들어, 숫자를 파라미터로 사용할 때는 다음과 같이 지정할 수 있습니다.

    #hostingforum.kr
    php
    
    $stmt->bindParam(':id', $id, PDO::PARAM_INT);
    
    


    날짜를 파라미터로 사용할 때는 다음과 같이 지정할 수 있습니다.

    #hostingforum.kr
    php
    
    $stmt->bindParam(':date', $date, PDO::PARAM_STR);
    
    


    또는 날짜를 파라미터로 사용할 때는 DateTime 객체를 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $stmt->bindParam(':date', $date, PDO::PARAM_STR, 10);
    
    


    위의 코드에서 10은 날짜의 형식에 따라 달라질 수 있습니다. 예를 들어, YYYY-MM-DD 형식일 때는 10을 사용하고, YYYY-MM-DD HH:MM:SS 형식일 때는 19를 사용합니다.

    또한, 파라미터의 타입을 지정할 때는 PDO::PARAM_INT, PDO::PARAM_STR, PDO::PARAM_BOOL, PDO::PARAM_NULL, PDO::PARAM_LOB, PDO::PARAM_STMT, PDO::PARAM_INPUT_OUTPUT 중 하나를 사용할 수 있습니다.

    2025-04-08 07:35

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

검색

게시물 검색