sql문 ",' 질문입니다

sql문 ",' 질문입니다

QA

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}'" );

 

와 같이 문자열 중간에 { } 로 감싸서 변수를 사용하는것이 좋습니다.

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

회원로그인

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