sql안에 변수들을 가변적으로 쓸수있을까요

sql안에 변수들을 가변적으로 쓸수있을까요

QA

sql안에 변수들을 가변적으로 쓸수있을까요

본문

기존분들도 안하셨던걸보면 원래 언어적으로 안되는가 싶다가도 질문드립니다.

 

inser나 update sql 칠때

 

$sql = "

                    ~~~~~~~~~

                  ~~~~~~~~~

                     wr_1 = '$wr_1',

                     wr_2 = '$wr_2',

                     wr_3 = '$wr_3',

                     wr_4 = '$wr_4',

                     wr_5 = '$wr_5',

                     wr_6 = '$wr_6',

                     wr_7 = '$wr_7',

                     wr_8 = '$wr_8',

                     wr_9 = '$wr_9' "

이런식인데 저부분을 common.php같은데 빼놓고 변수처럼 쓸수있을까요

 

$extra_sql = "

  wr_1 = '$wr_1',

  wr_2 = '$wr_2'

.....

";

 

이런식으로 하면 common.php에서 $wr_1 값이 null이라 

$extra_sql 스트링값이 

$extra_sql = "

  wr_1 = '',

  wr_2 = ''

.....

";

이렇게 공백으로 인식해서 문제고

 

$extra_sql = "

  wr_1 = '\$wr_1',

  wr_2 = '\$wr_2'

.....

";

역슬레시로 해도 db에 $표시까지 그대로 문자로 들어갑니다.

 

혹시 방법이 있을까요? 추가 컬럼이많고 또 확정이 아니기도해서 질문드립니다

 

이 질문에 댓글 쓰기 :

답변 4

음.. $wr_1 값을 만드는 부분이 common.php 보다 아래에 있을텐데  

(예를들면 view.php, write.php 이런 페이지들)

$wr_1이 get, post로 주고받는 데이터가 아니다보니

common.php에서 전역으로 묶어서 사용하긴 힘들어 보입니다.

문자열로 만들어두고 치환하시면 될거 같네요

 

ex) 


common 에서
$sql = "
                    ~~~~~~~~~
                  ~~~~~~~~~
                     wr_1 = '{{wr_1}}',
                     wr_2 = '{{wr_2}}',
                     wr_3 = '{{wr_3}}',
                     wr_4 = '{{wr_4}}',
                     wr_5 = '{{wr_5}}',
                     wr_6 = '{{wr_6}}',
                     wr_7 = '{{wr_7}}',
                     wr_8 = '{{wr_8}}',
                     wr_9 = '{{wr_9}}' ";
 
 
 
 
실제로 쿼리를 사용하는 소스에서
$sql = str_replace("{{wr_1}}" , $wr_1 , $sql );
$sql = str_replace("{{wr_2}}" , $wr_2 , $sql );
$sql = str_replace("{{wr_3}}" , $wr_3 , $sql );

감사합니다. 그런데 이것도 나중에 뭘 추가하려면 write_update.php 쪽을 직접 건드려야 하지않나요? 혹시 제가 제 답변으로 해놓은 방법은 어떤가요? 써도되는 코드인가요?

해결했습니다

common.php에

$extra_list = array(

  "wr1",

  "wr2",

  "wr3",  

);

이렇게 두고

기존 $sql에 추가하는 형식으로

   $sql = "insert into ~~~~~";

 

   foreach($extra_list as $k=>$v){

        $tmpV = " ,".$v." = ".$$v;

        $sql .= $tmpV;

        //;

    }

 

$를 두개써서 동적으로 할당이 되네요

답변을 작성하시기 전에 로그인 해주세요.
전체 59,306
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT