제목 | post방식으로 받고 데이터베이스에 저장할 때 값 누락 | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 하재 | 작성시각 | 2017/09/14 20:58:16 |
|
|||
코드이그나이터를 이용해서 게시판을 짜고있습니다
if (isset($_POST['subject'])) { $subject = $_POST['subject']; $context = $_POST['context']; } $this->board_model->modify("board", $subject, $context, $id);
이러한 방식으로 모델에 modify라는 함수를 만들어서 update 쿼리문을 실행하는 것입니다. public function modify($table, $subject, $context, $id) { $sql = "update $table set subject='$subject', context='$context' where id=$id"; $this->db->query($sql); }
위 내용을 실행하면 값이 들어가지 않고 공백으로 업데이트됩니다. 모델의 $sql문을 출력해보면 string(59) "update board set subject='asdf', context='asdf' where id=32" 이런식으로 잘 나옵니다. 이것을 그대로 복사해서 db에서 실행시키면 값이 제대로 들어갑니다. 그리고 $this->board_model->modify("board", $subject, $context, $id); 이부분을 $this->board_model->modify("board", "asdf", "asdf", $id); 이렇게 실행시키면 값이 제대로 들어갑니다. 이런 이유로 $_post 쪽의 문제가 아닐까라고 생각해보고 여러가지 시도해봤지만 안됬습니다.... 정확한 이유를 알고싶습니다.
|
|||
다음글 | URL 이 바로 사이트 첫패이지가 될수 없나요? (포워... (3) | ||
이전글 | 완전 초보) MVC 질문드립니다! (2) | ||
빛그림
/
2017/09/14 21:28:27 /
추천
0
|
||||||||||
하재
/
2017/09/14 22:19:34 /
추천
0
$subject = $this->input->post('subject', true); 이렇게 바꿨는데도 잘안됩니다.. 값을 출력해봐도 string으로 잘 출력되고 잘 넘어가는데 update할때만 공백으로 들어갑니다 |
||||||||||
한대승(불의회상)
/
2017/09/15 07:54:04 /
추천
0
$this->output->enable_profiler() 를 사용하여 입력 받는 데이터를 확인해 보세요.
|
||||||||||
변종원(웅파)
/
2017/09/15 09:11:35 /
추천
0
컨트롤러에서 출력, 모델에서 출력해서 비교해보세요.
|
||||||||||
하재
/
2017/09/15 11:11:41 /
추천
0
POST DATA
DATABASE: onlyboard (onlyBoard:$db) QUERIES: 3 (0.0503 seconds) (Hide)
이런식으로 값은 잘들어가는데 역시 공백이 들어갑니다 ...ㅠ |
||||||||||
하재
/
2017/09/15 11:16:34 /
추천
0
모델, 컨트롤러 두군데 다 출력해봤는데 문자열로 잘나옵니다...ㅠㅠ
|
||||||||||
변종원(웅파)
/
2017/09/15 11:18:59 /
추천
0
그럼 ci 문제는 아닌 걸로 판단됩니다. php, mysql 버전 및 php-mysql 연결, mysql, mysql-server 버전등 체크해보셔야 할 것 같네요. |
||||||||||
배강민
/
2017/09/15 15:21:26 /
추천
0
아무리 봐도 오류가 안보여서 답이 나오길 기다리고 있었는데, 아직 안나왔네요. 정말 신기하네요. 뭐가 저걸 막는걸지 코드상으로는 도저히 모르겠네요. 흠
|
||||||||||
하재
/
2017/09/15 15:40:10 /
추천
0
답변주신분들 정말 감사합니다. mysql 쪽으로 한번 오류 찾아보고 답이 나오면 올리도록 하겟습니다 ㅠㅠ 감사합니다
|
||||||||||
개락
/
2017/09/16 08:39:08 /
추천
0
$sql = "update $table set subject='".$subject."', context='".$context."' where id=$id"; 위처럼 안써도 된다는걸 오늘 처음 알았어요 헛... |
||||||||||
변종원(웅파)
/
2017/09/16 21:22:02 /
추천
0
개락/ 그렇게 하시는게 가독성에서 유리하고 그래야하는게 맞습니다.
|
||||||||||
하재
/
2017/09/18 19:24:02 /
추천
0
update를 사용하면 쿼리가 두번실행되는거 같습니다 update로 조회수를 1올리는것을 실행시켯는데 2씩 올라가네요.. 어디서 문제인지 감이 안잡힙니다 아마 이거 때문에 값이 들어갓다가 어디서 빈값이 들어간거같은데 이 문제는 어떻게 해결하면 좋을까요
|
||||||||||
하재
/
2017/09/18 22:02:03 /
추천
0
<!-- jQuery (부트스트랩의 자바스크립트 플러그인을 위해 필요합니다) --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <!-- 모든 컴파일된 플러그인을 포함합니다 (아래), 원하지 않는다면 필요한 각각의 파일을 포함하세요 --> <script src="js/bootstrap.min.js"></script> 이부분이 문제였습니다... 그 footer로빼놧었는데 뭐가 문제인지 모르겟지만 스크립트 부분 두군데를 주석처리하니까 모든게 해결되었습니다... 어디가 문제였을까요... 저게 문제가 될수있나요 ㅠㅠ? |
||||||||||
배강민
/
2017/09/19 09:13:34 /
추천
0
허허 전X민님과 구두로 해당 이슈에 대해서 얘기해봤을때 전X민님이 "두번 실행되는거 아닌가?"라고 해서, 제가 상황상 그럴 수가 없다라고 했는데, 두번 이었다니 신기하네요
|
||||||||||
kaido
/
2017/09/19 13:53:09 /
추천
0
jqeury 가 문제가 되진 않았으나 저도 비슷한 경우를 경험 했습니다 그냥 스크립트 하나 로드 하는건데 이상하게 조회수가 2개씩 올라가는 겁니다. 그래서 찾아보니 파트너사의 외부 js 때문에 update 가 2번때리고 있었.... 왜 그랬는지는 아직도 이해 불가... [그렇다고 그 js 가 새로고침을 하거나 하는것도 아니었는데 말이죠]
참고로 ASP 에서 그랬으니... CI하고는 전혀 무관했었습니다. |
||||||||||
$subject = $_POST['subject'] 으로 쓰지 마시고
$subject = $this->input->post('subject', true); 이렇게 쓰시는게 코드이그나이터 스럽게 쓰는 방법이고요.
딱이 안될만한건 없고, $_POST로 받은 데이터가 $subject, $context 등의 변수에 저장이 잘 안되서 그런듯 보이네요.
echo문으로 함 찍어보시는 테스트가 필요해보입니다.