울면 안되시죠~ ^^;
201에러는 syntax 에러입니다.
$que를 print해서 쿼리가 제대로 generate 되는지 확인해보시길 바랍니다.
sql syntax 에러니까요.
그럼.
-- 김민지 님이 쓰신 글:
>> 게시판을 만들고 있는데...
>> 제대로 안되고 미치겠습니다.
>>
>> 저는 인포믹스를 사용하고 있구...
>> PHP 로 게시판을 만들고 있습니다.
>> 제발 봐주세요..
>>
>> board_write.php 로 글을 쓰고 저장버튼 클릭하면
>> board_list.php로 글이 올라가야 하는데...
>> 전혀 올라가질 않고..
>>
>> 아래와 같은 에러 메세지가 나타납니다.
>> Warning: Prepare fails (E [SQLSTATE=42 000 SQLCODE=-201]) in /usr/local/apache/htdocs/myung/mtboard.php on line 90
>> E [SQLSTATE=42 000 SQLCODE=-201]게시판의 리스트를 가지고 올 수 없습니다.
>>
>> 테이블만 제대로 보임.
>>
>>
>> Fatal error: Call to undefined function: off() in /usr/local/apache/htdocs/myung/mtboard.php on line 195
>>
>> ---- mtboard.php 소스 ----
>> <?
>>
>> require("./board.ini");
>>
>> class mtboard
>> {
>> var $con=false;
>> var $rlt;
>> var $allarticle; //전체 글 개수
>> var $alllist; //전체 리스트 개수
>> var $mode;
>> var $keywork;
>>
>>
>> function mtboard($mode="", $keyword="")
>> {
>> global $server, $userid, $passid, $bd_num_article;
>>
>> $this->mode = $mode;
>> $this->keyword=$keyword;
>> $this->con=ifx_connect($server, $userid, $passid);
>>
>>
>> if(!$this->con)
>> die ("데이터베이스와 연결이 되지 않습니다.");
>>
>>
>>
>> if(strlen($this->mode) && strlen($this->keyword)){
>> $search = $this->makeSearchSQL($this->mode,$this->keyword);
>> $que= "select count(*) from board $search";
>> }
>> else $que = "select count(*) from board";
>>
>> $rlt = ifx_prepare($que, $this->con);
>> if(!ifx_do($rlt)){
>> echo ifx_error();
>> die ("전체 글의 개수를 알수 없습니다.");
>> return;
>> }
>> else {
>>
>> $tmp = ifx_fetch_row($rlt);
>>
>> $this->allarticle=(int)$tmp["(count(*))"];
>>
>> ifx_free_result($rlt);
>>
>> //전체 글 리스트의 개수
>> $this->alllist=$this->allarticle / $bd_num_article;
>> $this->alllist = (int)$this->alllist;
>>
>> $mod = $this->allarticle % $bd_num_article;
>> if($mod!=0)
>> ++$this->alllist;
>> }
>>
>> //답변글
>> // session_start();
>> }
>>
>> function close()
>> {
>> @ifx_free_result($this->rlt);
>> ifx_close($this->con);
>> }
>>
>> function getlist($list)
>> {
>> global $bd_num_article;
>>
>> $tmplist=($list-1) * $bd_num_article;
>>
>> if(strlen($this->mode) && strlen($this->keyword)) {
>> $search = $this->makeSearchSQL($this->mode, $this->keyword);
>> $que = "select num, parent_id, child_id, title, name, date, readed
>> from board $search order by parent_id DESC, child_id ASC";
>> }
>> else {
>> $que="select num, parent_id, child_id, title, name, date, readed
>> from $board order by parent_id DESC, child_id ASC";
>> }
>>
>>
>> if(!$this->rlt = ifx_query($que, $this->con)) { ======> 90
>> echo ifx_error();
>> echo ("게시판의 리스트를 가지고 올 수 없습니다.<br>");
>> return ;
>> }
>>
>> /* $rlt = ifx_prepare($que, $this->con);
>> if(!ifx_do($rlt)){
>> echo ifx_error();
>> die ("게시판의 리스트를 가지고 올 수 없습니다.");
>> } */
>>
>> //lists의 오브젝트 생성
>> $rtnlists=new lists($list, $this->mode, $this->keyword);
>>
>> //현재 리스트 글 개수
>> $rtnlists->num_articles = $list==$this->alllist ?
>> $this->allarticle-($bd_num_article*($list-1)) : 15;
>>
>>
>> if($list>1)
>> for($i=$tmplist; $i>0 ; --$i)
>> $row = ifx_fetch_row($this->rlt, "next");
>>
>> for($i=0; $i<$rtnlists->num_articles; ++$i){
>> $row = ifx_fetch_row($this->rlt, "next");
>>
>> //주의요망
>> $row[Xnum] = $this->allarticle-$tmplist-$i;
>> $rtnlists->article[$i] = $row;
>> }
>>
>> ifx_free_result($this->rlt);
>> return $rtnlists;
>> }
>>
>>
>>
>> //읽은글 1증가시키기
>> function readed($num)
>> {
>> $que="update board set readed = readed+1 where num=$num";
>>
>> if(!$this->rlt = ifx_query($que, $this->con)){
>> echo "글의 읽은 수를 +1 올릴 수 없습니더<br>";
>> echo ifx_error();
>> return;
>> }
>>
>> }
>>
>>
>>
>> function getarticle($num, $list)
>> {
>> //글 가져오기
>> $que = "select num, parent_id, child_id, title, content, name, date, readed
>> from board where num=$num";
>>
>> if(!$this->rlt = ifx_query($que, $this->con)){
>> echo "게시판의 글을 가지고 올 수 업심더";
>> echo ifx_error();
>> return;
>> }
>>
>> $row = ifx_fetch_row($this->rlt, "first");
>> ifx_free_result($this->rlt);
>>
>> if(strlen($this->mode) && strlen($this->keyword))
>> $rtnarticle= new article($row, $list, $mode, $keyword);
>> else
>> $rtnarticle= new article($row, $list);
>>
>> //같은 부모글에 달린 형제글 개수 가져오기
>> $que = "select count(*) from board where parent_id=$row[parent_id]";
>>
>> if($this->rlt = ifx_query($que, $this->con))
>> {
>> //형제글 개수
>> $tmp= ifx_fetch_row($this->rlt);
>> $rtnarticle->num_brother = $tmp["(count(*))"];
>>
>> $que = "select num, parent_id, child_id, title, name, date, readed
>> from board where parent_id=$row[parent_id] order by child_id ASC";
>>
>> $this->rlt = ifx_query($que, $this->con);
>>
>> for($i=0; $i<$rtnarticle->num_brother; ++$i){
>> $rtnarticle->brother[] = ifx_fetch_row ($this->rlt, "next");
>> }
>> ifx_free_result($this->rlt);
>> }
>> else $rtnarticle->num_brother= 0;
>> return $rtnarticle;
>> }
>>
>>
>>
>> function eclistlink($list=1)
>> {
>> global $htmlist, $bd_num_article, $bd_num_list;
>>
>> //리스트 시작
>> if($list%$bd_num_list)
>> {
>> $start_list=off($list, 1, $bd_num_list) +1; =======>195
>> }
>> else
>> $start_list=$list-$bd_num_list+1;
>> //리스트 끝
>> $end_list=min($start_list + $bd_num_list, $this->alllist);
>>
>> for($i=$start_list; $i<=$end_list; ++$i)
>> {
>> if($i != $list)
>> {
>> if(strlen($this->mode) && strlen($this->keyword))
>> $arg="list=".$i."&mode=".$this->mode."&keyword=".$this->keyword;
>> else
>> $arg= "list=".$i ;
>> $link="<font size=2>[".taghyperlink($i,$htmlist,$arg)."]</font>";
>> echo $link;
>> }else {
>> $str = "<font size=3><b><i> ".$i." </i></b></font>";
>> echo $str;
>> }
>> }
>> }
>>
>> //현재 리스트에서 이전으로
>> function ecbeforelistlink($list)
>> {
>> global $htmlist, $bd_num_list;
>>
>> if($list>$bd_num_list){
>> $list=off($list, 1, $bd_num_list) - $bd_num_list + 1;
>>
>> if(strlen($this->mode) && strlen($this->keyword))
>> $arg = "list=".$list."&mode=".$this->mode."&keyword=".$this->keyword;
>> else
>> $arg="list=".$list;
>>
>> $link="<font size=2>".taghyperlink ("<_before",$htmlist,$arg)."</font>";
>> echo $link;
>> }
>> }
>>
>> function ecnextlistlink($list)
>> {
>> global $htmlist, $bd_num_list;
>>
>> $list=up($list, 1, $bd_num_list) +1;
>>
>> if($list <= $this->alllist)
>> {
>> if(strlen($this->mode)&& strlen($this->keyword))
>> $arg="list=".$list."&mode=".$this->mode."&keyword=".$this->keyword;
>> else
>> $arg="list=".$list;
>> $link="<font size=2>".taghyperlink("next_>",$htmlist,$arg)."</font>";
>> echo $link;
>> }
>> }
>>
>> function eccurrentlistlink($list)
>> {
>> global $htmlist;
>>
>> if(strlen($this->mode)&& strlen($this->keyword))
>> $arg="list=".$list."&mode=".$this->mode."&keyword=".$this->keyword;
>> else
>> $arg="list=".$list;
>>
>> $link="<font size=2>".taghyperlink("<img src='./img/list.gif' border=0 >", $htmlist, $arg)."</font>";
>>
>> echo $link;
>> }
>>
>>
>> function ecfirstlistlink()
>> {
>> global $htmlist;
>>
>> $link ="<font size=2>".taghyperlink("<img src='./img/list.gif' border=0 width='85' height='17' align='absmiddle'>",
>> $htmlist)."</font>";
>>
>> echo $link;
>> }
>>
>> function ecnewwrite($list)
>> {
>> global $htmwrite;
>>
>> $link=taghyperlink("<img src='./img/write.gif'>", $htmwrite, "list=".$list);
>>
>> echo $link;
>> }
>>
>>
>> function ecmodify()
>> {
>> global $htmmodify;
>>
>> $link= taghyperlink("<img src='./img/modify.gif'>", $htmmodify, "list=".$list."&no=".$this->article[no]);
>>
>> echo $link;
>> }
>>
>>
>> function delete($num, $password)
>> {
>> $password = crypt($password, $password);
>>
>> $que="select num from board where num=$num and password='$password'";
>>
>> $this->rlt = ifx_prepare($que, $this->con);
>> ifx_do($this->rlt);
>>
>> ifx_fetch_row($this->rlt);
>>
>> $num_row= ifx_num_rows($this->rlt);
>>
>> if(ifx_num_rows($this->rlt)){
>> ifx_free_result($this->rlt);
>>
>> $que="delete from board where num=$num";
>> return ifx_query($que, $this->con);
>> }
>> else return false;
>> }
>>
>>
>> function modify($name,
>> $password,
>> $title,
>> $content,
>> $num)
>> {
>> $password = crypt($password, $password);
>>
>> //암호가 맞는지
>> $que = "select num from board where num=$num and password='$password'";
>>
>> $this->rlt = ifx_query($que, $this->con);
>>
>> ifx_fetch_row($this->rlt);
>>
>> if(ifx_num_rows($this->rlt))
>> {
>> ifx_free_result($this->rlt);
>>
>> $title=htmlspecialchars($title);
>> $name=addslashes($name);
>> $title=addslashes($title);
>> $content=addslashes($content);
>>
>> $blob_content=ifx_create_blob(1, 0, $content);
>> $blob_id[] = $blob_content;
>>
>> $que="update board set title='$title', name='$name', content=? where num='$num'";
>>
>> return ifx_query($que, $this->con, $blob_id);
>> }
>> else return false;
>> }
>>
>> //글쓰기
>> function write($name,
>> $password,
>> $title,
>> $content,
>> $email,
>> $homepage)
>> {
>> $que="select max(parent_id) from board";
>> $this->rlt = ifx_query($que, $this->con);
>>
>> $parent_id = ifx_fetch_row($this->rlt, "first");
>> $max_parent_id = $parent_id["(max)"] + 1;
>>
>> ifx_free_result($this->rlt);
>>
>> $title=htmlspecialchars($title);
>> $name=addslashes($name);
>> $title=addslashes($title);
>> $content=addslashes($content);
>>
>>
>> $date=date("Y.m.t");
>> $time=date("h:i:s");
>> $password=crypt($password, $password);
>>
>> $blob_content=ifx_create_blob(1, 0, $content);
>> $blob_id[] = $blob_content;
>>
>> $que="insert into board(parent_id, name, title, content, date, time, password, email, homepage) values
>> ('$max_parent_id','$name','$title',?,'$date', '$time', '$password','$email', $url)";
>>
>> $rid=ifx_prepare($que, $this->con, $blob_id);
>>
>> if(!ifx_do($rid)){
>> echo "글쓰기에 문제가 째끔 있네요";
>> echo ifx_error();
>> return;
>> }
>> }
>>
>> //수정
>> function replywrite($name,
>> $password,
>> $title,
>> $content,
>> $parent_id,
>> $ori_child_id,
>> $depth)
>> {
>> $que="select child_id from board where parent_id=$parent_id and child_id like
>> '".$ori_child_id."_' order by child_id DESC";
>>
>> $this->rlt = ifx_prepare($que, $this->con);
>> ifx_do($this->rlt);
>>
>> if(@ifx_num_rows($this->rlt)){
>> $child_id = ifx_fetch_row($this->rlt, "FIRST");
>> $child_id=$child_id[child_id];
>> ifx_free_result($this->rlt);
>>
>> $tmp = $child_id[$depth];
>> $tmp = ord($tmp) + 1;
>> $child_id[$depth] = chr($tmp);
>> }
>> else $child_id = $ori_child_id."A";
>>
>> $title=htmlspecialchars($title);
>>
>> $name=addslashes($name);
>> $title=addslashes($title);
>> $content=addslashes($content);
>>
>> $blob_content=ifx_create_blob(1, 0, $content);
>> $blob_id[] = $blob_content;
>>
>> $date = date("Y.m.t");
>> $time=date("h:i:s");
>> $password=crypt($password, $password);
>>
>>
>> $que="insert into board(parent_id, child_id, name, title, content, date, time, password) values
>> ('$parent_id','$child_id','$name','$title',?,'$date', '$time', '$password')";
>>
>> $rid=ifx_prepare($que, $this->con, $blob_id);
>>
>> if(!ifx_do($rid)){
>> echo "답글 쓰기에 문제가 있습니다.";
>> echo ifx_error();
>> }
>> }
>>
>>
>> function makeSearchSQL($mode, $keyword)
>> {
>> switch($mode)
>> {
>> case 0:
>> $que = "title like '%$keyword%'";
>> break;
>> case 1:
>> $que = "content like '%$keyword%'";
>> break;
>> case 2:
>> $que = "name like '%$keyword%'";
>> break;
>> }
>>
>> return "where".$que;
>> }
>>
>> }
>>
>>
>>
>> class lists
>> {
>> var $article;
>> var $num_articles;
>>
>> var $mode;
>> var $keyword;
>>
>> var $list;
>>
>> function lists($list, $mode, $keyword)
>> {
>> $this->list = $list;
>> $this->mode= $mode;
>> $this->keyword = $keyword;
>>
>> }
>>
>> function getarticle($number= 0){
>> if(strlen($this->mode) && srtlen($this->keyword))
>> $rtn = new article($this->article[$number], $this->list, $this->mode, $this->keyword);
>> else
>> $rtn= new article($this->article[$number], $this->list);
>>
>> return $rtn;
>> }
>> }
>>
>>
>>
>> class article
>> {
>> var $article;
>> var $list;
>> var $mode;
>> var $keyword;
>>
>> var $num_brother;
>> var $brother;
>>
>> function article($article, $list, $mode="", $keyword="")
>> {
>> $this->list=$list;
>> $this->list=$mode;
>> $this->keyword=$keyword;
>>
>> $this->article=$this->filter($article);
>>
>> }
>>
>>
>> function filter($row)
>> {
>> global $htmread, $bd_title_length;
>>
>> if(isset($row[content]))
>> {
>> $row[content] = stripslashes($row[content]);
>> $row[Hcontent] = nl2br($row[content]);
>> $row[Hcontent] =
>> tagreplaceemaillink($row[Hcontent]);
>> $row[Hcontent] =
>> tagreplacehttplink($row[Hcontent]);
>> $row[Hcontent] = tagreplaceftplink($row[Hcontent]);
>> }
>>
>> $row[depth] = strlen($row[child_id]);
>> $row[htitle] = stripslashes($row[title]);
>> $row[htitle] = ksubstr($row[htitle], 0, $bd_title_length);
>>
>> if(strlen($this->mode) && strlen($this->keyword)){
>> $row[htitle] = taghyperlink($row[htitle], $htmread,
>>
>> "list=".$this->list."$parent_id=".$row[parent_id].
>> "$num=".$row[num]."$mode=".$this->mode."&keyword=".$this->keyword);
>> }
>>
>> else{
>> $row[htitle] = taghyperlink($row[htitle], $htmread, "list=".$this->list.
>> "&parent_id=".$row[parent_id]. "&num=".$row[num]);
>> }
>>
>> $row[name] = stripslashes($row[name]);
>> $row[email]=stripslashes($row[email]);
>>
>> $row[email] = tagemaillink($row[email], $row[email]);
>>
>> return $row;
>> }
>>
>>
>> function getbrother($i)
>> {
>> if($i>$this->num_brother || $i<0 || $this-> num_brother<2)
>> return false;
>>
>> if(strlen($this->mode) && strlen($this->keyword))
>> $rtn = new article($this->brother[$i], $this->list, $this->mode, $this->keyword);
>>
>> else
>> $rtn = new article($this->brother[$i], $this->list);
>>
>> return $rtn;
>> }
>>
>>
>> function ecreplywrite()
>> {
>> global $htmreplywrite, $child_id, $depth, $ori_num, $parent_id;
>>
>> $child_id = $this->article[child_id];
>> $depth = $this->article[depth];
>> $ori_num = $this->article[num];
>> $parent_id = $this->article[parent_id];
>>
>>
>> session_start();
>>
>> session_register("parent_id");
>> session_register("child_id");
>> /* session_register("depth"); */
>> session_register("ori_num");
>>
>> $link = taghyperlink("<img src='./img/write.gif'>", $htmreplywrite, "list=".$this->list);
>>
>> echo $link;
>>
>> }
>>
>> function ecmodify()
>> {
>> global $htmmodify;
>>
>> $link = taghyperlink("<img src='./img/modify.gif'>", $htmmodify,
>> "list=".$this->list."&num=".$this->article[num]);
>>
>> echo $link;
>> }
>>
>>
>> function ecdelete()
>> {
>> global $htmdelete;
>>
>> $link = taghyperlink("<img src='./img/delete.gif'>", $htmdelete,
>> "list=".$this->list."&num=".$this->article[num]);
>>
>> echo $link;
>>
>> }
>>
>> };
>>
>>
>>
>> ?>
|