sql_query 로 불러올때 sql 문은 어떻게 작성해야 표준인가요?
본문
$sql = " ~~~ ";
$result = sql_query ($sql);
그누보드에선 이렇게해서 보통 sql 문을 실행 하던데요..
sql 따옴표 안에 어떻게 쓰는게 맞는건지 궁금해서 질문 올립니다.
따옴표 안에 변수를 어떻게 감싸주는가 하는게 포인트인데요..
$sql = "update `$g5[member_table]` set mb_friend = `$friend_temp` where mb_id = `$member[mb_id]` ";
$sql = "update {$g5[member_table]} set mb_friend = {$friend_temp} where mb_id = {$member[mb_id]} ";
$sql = "update `$g5['member_table']` set mb_friend = `$friend_temp` where mb_id = `$member['mb_id']` ";
$sql = "update {$g5['member_table']} set mb_friend = {$friend_temp} where mb_id = {$member['mb_id']} ";
일단 위에 4가지는 동작안하고요
$sql = 'update '.$g5[member_table].' set mb_friend = '.$friend_temp.' where mb_id = '.$member[mb_id].' ';
$sql = "update '.$g5[member_table].' set mb_friend = '.$friend_temp.' where mb_id = '.$member[mb_id].' ";
$sql = "update ".$g5[member_table]." set mb_friend = ".$friend_temp." where mb_id = ".$member[mb_id]." ";
이런식으로 하는것도 안되고요..
$sql = "update \''.$g5[member_table].'\' set mb_friend = \''.$friend_temp.'\' where mb_id = \''.$member[mb_id].'\' ";
이렇게 하는것도 안됩니다.
그런데
$result=sql_query('update '.$g5['member_table'].' set mb_friend = \''.$friend_temp.'\' where mb_id = \''.$member[mb_id].'\'');
변수로 따로 안만들고
이렇게 바로 다 때려넣는건 또 됩니다...
대체 어떤 규칙으로 작성되야 하는건지 궁금합니다.
그누보드5 파일들 보면 그냥 {} 으로 변수를 감싸서 쿼리문 작성해도 잘만 동작하던데..
저는 왜 안되는지.. 되는건 또 어째서 되는건지...
그누보드5 에서 뭔가 손을 봐야 하는건지
아니면 아파치 php설정에서 뭐 어떻게 하는게 잇는건지..
그냥 제가 빠가인건지.. 뭐 여기저기 뒤져봐도 딱히 설명은 없고
궁금해서 질문 올립니다.
답변 1
$sql = "update `$g5[member_table]` set mb_friend = `$friend_temp` where mb_id = `$member[mb_id]` ";
`(백틱, 숫자 1옆에 있는 역따옴표)으로 값을 감쌀 경우는 칼럼으로 해석합니다.
이건 테이블이나 칼럼만 감싸야 합니다.
위에선 mb_friend = `여기` 부분을 감쌌기 때문에 저 부분을 칼럼으로 해석하려고 할 겁니다.
그리고 문자열의 경우는 `(작은따옴표) 혹은 "(큰따옴표)로 감싸야 합니다.
숫자는 제욉니다.
기본적인 CRUD(create, read, update, delete) 이것들은 전부 표준입니다.
다만 말씀하신 건 문법에 맞게 안 쓴 것들이기 때문에 실행이 안 되는 겁니다.
$sql = "UPDATE ".$g5['member_table']." SET mb_friend = '".$friend_temp."' WHERE mb_id = '".$member['mb_id']."'";
$sql = "UPDATE {$g5['member_table']} SET mb_friend = '{$friend_temp}' WHERE mb_id = '{$member['mb_id']}'";
잘 모르겠다 싶으시면 저렇게 php 변수들은 escape 시켜서 사용하시면 됩니다.
에디트 플러스 같은 프로그램을 사용해 보시면 색상이 바뀌니까 이해가 갈 겁니다.