sql문 ",' 질문입니다
본문
안녕하세요
프론트앤드 개발자입니다
기존 홈페이지에서 ",' 를 저런식으로 사용해서 굳이 쌍따움표와 따움표를 다 사용할 필요가 있는지 궁금해서 질문드립니다.
$sql = " insert into {$g5['member_table']} set mb_id = '".$mb_id."', mb_nick = '".$mb_name."'";
인터넷에서 검색했을때 나온 쿼리문은
mysql_query("INSERT INTO social_info SET m_id = '.intval($id).', m_pos = '.$pos1.'" );
입니다 .를 기준으로 저희 홈페이지에서 사용한 코드는 변수를 " " 안에 넣는데 꼭 저렇게 해야하는건가요?
답변 3
mysql 에서 문자열은 따옴표(') 로 묶여야 한다는 규칙이 있습니다.
php 에서는 문자열에 쌍따옴표("), 따옴표(') 가 모두 쓰일 수 있는데, 미묘한 차이가 있습니다.
(쌍따옴표 안에서는 php 변수를 쓸 수 있습니다. 따옴표 안에서는 X)
mysql_query("INSERT INTO social_info SET m_id = '.intval($id).', m_pos = '.$pos1.'" );
은 에러가 나는 구문입니다.
고친다면
-> mysql_query("INSERT INTO social_info SET m_id = '" . intval($id) . "', m_pos = '" . $pos1 . "'" );
개인적으로 가장 권장하는 형태는 다음의 형태입니다.
$sql = " insert into {$g5['member_table']} set mb_id = '".$mb_id."', mb_nick = '".$mb_name."'";
->
쌍따옴표를 쓰고, php 변수는 {} 로 묶어서(필수는 아닙니다.) 처리
$sql = " insert into {$g5['member_table']} set mb_id = '{$mb_id}', mb_nick = '{$mb_name}'";
mysql_query("INSERT INTO social_info SET m_id = '" . intval($id) . "', m_pos = '" . $pos1 . "'" );
->
$id = intval($id);
mysql_query("INSERT INTO social_info SET m_id = '{$id}', m_pos = '{$pos1}'" );
m_id = '.intval($id).', <-- 이것은 m_id 필드가 숫자형이고 데이터가 숫자여서 따옴표 없이도 됩니다
mb_id = '".$mb_id."', <-- 이것은 mb_id가 문자이고 자료도 문자여서 작은따옴표가 있어야 됩니다
문자열에서 문자열을 내포하려면
꼭 SQL문이 아니더라도
" 문자열중 ' 따옴표 \" 쌍따옴표 ";
와 같이 표현해야 합니다.
중간에 변수를 이어서 사용하려면
" ".$변수." ";
가 되는게 맞죠
그 변수의 값이
' ' 로 감싸져야 한다면
" '".$변수."' ";
이렇게 되어야 이상작동을 안합니다.
저 방법이 이상하고 불편하시면
{ $변수 } 로 감싸는 방법도 있습니다.
" {$변수} ";
위의 질문에 인터넷에서 찾은문장은 오류가 있습니다.
mysql_query("INSERT INTO social_info SET m_id = '.intval($id).', m_pos = '.$pos1.'" );
" 로 시작해서
중간에
'.intval($id).'
와
'.$pos1.'
는 앞뒤로 . 이 들어가는 문자열이 됩니다.
정상적으로 하려면
mysql_query("INSERT INTO social_info SET m_id = '".intval($id)."', m_pos = '".$pos1."'" );
와 같이 하던지
$idv = intval($id);
mysql_query("INSERT INTO social_info SET m_id = '{$idv}', m_pos = '{$pos1}'" );
와 같이 문자열 중간에 { } 로 감싸서 변수를 사용하는것이 좋습니다.