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 );
해결했습니다
common.php에
$extra_list = array(
"wr1",
"wr2",
"wr3",
);
이렇게 두고
기존 $sql에 추가하는 형식으로
$sql = "insert into ~~~~~";
foreach($extra_list as $k=>$v){
$tmpV = " ,".$v." = ".$$v;
$sql .= $tmpV;
//;
}
$를 두개써서 동적으로 할당이 되네요