코드이그나이터를 이용해서 게시판을 짜고있습니다
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 쪽의 문제가 아닐까라고 생각해보고 여러가지 시도해봤지만 안됬습니다....
정확한 이유를 알고싶습니다.
$subject = $this->input->post('subject', true); 이렇게 바꿨는데도 잘안됩니다..
값을 출력해봐도 string으로 잘 출력되고 잘 넘어가는데 update할때만 공백으로 들어갑니다
| $_POST['subject'] | asdf |
| $_POST['context'] | asdfaa |
DATABASE: onlyboard (onlyBoard:$db) QUERIES: 3 (0.0503 seconds) (Hide)
| 0.0008 | SELECT GET_LOCK('8b81ee6917cfd057ac90ab6086b84844', 300) AS ci_session_lock |
| 0.0006 | SELECT `data` |
| 0.0489 | update board set subject='asdf', context='asdfaa' where id=24 |
이런식으로 값은 잘들어가는데 역시 공백이 들어갑니다 ...ㅠ
그럼 ci 문제는 아닌 걸로 판단됩니다.
php, mysql 버전 및 php-mysql 연결, mysql, mysql-server 버전등 체크해보셔야 할 것 같네요.
$sql = "update $table set subject='".$subject."', context='".$context."' where id=$id";
위처럼 안써도 된다는걸 오늘 처음 알았어요 헛...
<!-- 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로빼놧었는데 뭐가 문제인지 모르겟지만 스크립트 부분 두군데를 주석처리하니까 모든게 해결되었습니다... 어디가 문제였을까요... 저게 문제가 될수있나요 ㅠㅠ?
jqeury 가 문제가 되진 않았으나 저도 비슷한 경우를 경험 했습니다
그냥 스크립트 하나 로드 하는건데 이상하게 조회수가 2개씩 올라가는 겁니다.
그래서 찾아보니 파트너사의 외부 js 때문에 update 가 2번때리고 있었.... 왜 그랬는지는 아직도 이해 불가...
[그렇다고 그 js 가 새로고침을 하거나 하는것도 아니었는데 말이죠]
참고로 ASP 에서 그랬으니... CI하고는 전혀 무관했었습니다.
$subject = $_POST['subject'] 으로 쓰지 마시고
$subject = $this->input->post('subject', true); 이렇게 쓰시는게 코드이그나이터 스럽게 쓰는 방법이고요.
딱이 안될만한건 없고, $_POST로 받은 데이터가 $subject, $context 등의 변수에 저장이 잘 안되서 그런듯 보이네요.
echo문으로 함 찍어보시는 테스트가 필요해보입니다.