Warning: 0 is not a MySQL link index 메시지는
DB와의 연결이 안되는 경우 나옵니다.
실제로 DB와의 연결이 끊어 졌거나DB와의 연결시 사용했던 변수를 사용하지 않고
다른 변수를 사용하는 경우 입니다.
예를들어 아래 문장이 있습니다
---
$db_connect=mysql_connect("localhost", "XXX", "XXXX")
or die("!! db connect fail !!");
if(!($status=mysql_select_db("zzzzzz", $db_connect))) {
echo("db connect fail! <br>");
}
$sqlmsg = "select qust, qust_fr_dt, qust_to_dt, ifnull(ref_conts,'') as ref_conts from tbname
where inf_seq_no = $inf_seq_no " ;
$result = mysql_query($sqlmsg, $db_connect)
or die ("질의어가 잘못되었습니다.");
---
위의 문장에서 $db_connect는 DB와의 연결에 대한 변수로 설정된 입니다.
$result = mysql_query($sqlmsg, $db_connect) 문장을
$result = mysql_query($sqlmsg, $connect)라고 쓰면 같은 error가 나옵니다.
즉 DB연결에 대한 변수로 설정되지 않은 $connect를 사용했기 때문입니다.
DB연결에 대한 변수를 정확히 사용햇는지 확인해 보세요
그리고 잘은 모르지만 외부에서 설정 후 include하는 경우 DB연결이 끊어지는
경우도 있는 것 같습니다.
더불어 한가지 더 ...
소스에 보면
$result = mysql_query($que1,$connect);
if($result >0)
{
$reason = "시간이 중복됩니다";
$why ="이미 등록되어 있는 시간";
add_error($why,$reason);
}
라고 되어 있는데 ...
의도가 해당자료가 있으면
$reason = "시간이 중복됩니다";
$why ="이미 등록되어 있는 시간";
add_error($why,$reason);
이 실행되게 하려는것 같은데요 ...
그러면 틀렸습니다.
$result는 error인 경우에만 0을 리턴 합니다.
즉 조회결과가 0건이라도 $result는 0이 아닙니다.
$result의 의미는 결과건수가 아닌 query의 결과에 대한 link식별자 이기
때문입니다.
그러므로 의도가 맞다면 아래와 같이 수정하세요 ...
$result = mysql_query($que1,$connect);
if(!$result) {
echo("<script> window.alert('질의에 오류가 있습니다...')
history.back() </script>") ;
}
$rownum = mysql_num_rows($result);
if ($rownum) {
$reason = "시간이 중복됩니다";
$why ="이미 등록되어 있는 시간";
add_error($why,$reason);
}
도움이 되었으면 좋겠습니다...
> 답변 정말 감사합니다.
> 하지만 그 문제는 아닌것 같군요...
> 의심스러워서 $reserv_date 이 놈들을 time 형이 아닌 varchar 형으로
> 다시 바꾸고
> 의심스러운 num 필드도 삭제해서
> 돌려도 똑같은 에러의 연속입니다.
> 제발 도와 주세요...
> 꾸벅
>
> > $que1 ="select room,reserv_date1,reserv_date2 from reserv_list where room = '$room'
>
> > and reserv_date1 < '$reserv_date1' and reserv_date2 > '$reserv_date1'";
> > /*여기가 문제의 query문입니다.시간예약이라 $reserv_date1 이 시작시간이라 reserv_date1(시작시
> 간)
> >
> > 과 2(종료시간) 사이에 끼면 안되잖아요*/
> >
> > 제생각에 reserv_date1가 time type이므로
> > reserv_date1 < '$reserv_date1' and reserv_date2 > '$reserv_date1' 에 '을 뺴야될것같습니다.
> >
> > 즉 reserv_date1 < $reserv_date1 and reserv_date2 > $reserv_date1 이런 식으로요.
> >
> > 그럼 꼭성공하세요.
> >
> >
> >
> >
> >
> >
> >
> > > 안녕하세요 초보 프로그래머입니다.
> > > 프로그래머의 길은 멀고도 험한가 봅니다. 아!!!! 한숨!!!
> > > 지금 예약 프로그램을 만들고 있는데 query 문에서
> > > 자꾸
> > > Warning: 0 is not a MySQL link index in /home/httpd/html/reserve/index.php3 on line 45
> > >
> > > Warning: 0 is not a MySQL link index in /home/httpd/html/reserve/index.php3 on line 33
> > >
> > >
> > > 이런 에러 때문에 정말 답답하군요....
> > >
> > >
> > > if($action=="reserve")
> > > {
> > > if( (!$name)||(!$email)||(!$room)||(!$reserv_date1)||(!$reserv_date2)||(!$reserv_date3)|
> |(
> > !$
> > > passwd) )
> > > {
> > > $why="입력난 공백";
> > > $reason="모든 항목을 기록해 주십시오";
> > > add_error($why,$reason);
> > > exit;
> > > }
> > >
> > > /*시간 중복 검사 */
> > >
> > > echo"$num,$room,$reserv_date1,$reserv_date2,$reserv_date3,$passwd,$email,$name";
> > > $que1 ="select room,reserv_date1,reserv_date2 from reserv_list where room = '$ro
> om
> > '
> > > and reserv_date1 < '$reserv_date1' and reserv_date2 > '$reserv_date1'";
> > > /*여기가 문제의 query문입니다.시간예약이라 $reserv_date1 이 시작시간이라 reserv_date1(시작
> 시
> > 간)
> > > 과 2(종료시간) 사이에 끼면 안되잖아요*/
> > >
> > > $result = mysql_query($que1,$connect);
> > > if($result >0)
> > > {
> > > $reason = "시간이 중복됩니다";
> > > $why ="이미 등록되어 있는 시간";
> > > add_error($why,$reason);
> > > }
> > >
> > > else
> > > {
> > > /*두번째 query 문 warnig error
> > > $que2="insert into reserv_list values ('','$reserv_date1','$reserv_date2','$reserv_date3
> ',
> >
> > > '$name','$email','$room','$passwd',now() )";
> > > $result = mysql_query($que2,$connect);
> > >
> > > if($result > 0)
> > > {
> > > echo "축하합니다. $name 님의 $reserv_date3 $reserv_date1 의 예약이 성공적으로 이뤄졌습니
> 다.
> > ";
> > >
> > > echo("<meta http-equiv='Refresh' Content='3; url=http://user.mirae.co.kr/reserve/'>")
> ;
> >
> > > exit;
> > > }
> > >
> > > else
> > > {
> > > $why="DB 에러";
> > > $reason ="질의 중 에러가 발생하였습니다.";
> > > add_error($why,$reason);
> > > }
> > >
> > > }/*위의 else */
> > >
> > >
> > >
> > >
> > > <테이블입니다.>
> > >
> > >
> > > create table reserv_list(
> > >
> > > num int(11) DEFAULT '0' NOT NULL auto_increment,
> > > reserv_date1 time,
> > > reserv_date2 time,
> > > reserv_date3 date,
> > > name varchar(20),
> > > email varchar(35),
> > > room varchar(35),
> > > passwd varchar(10),
> > > reg_date datetime,
> > > PRIMARY KEY(num)
> > >
> > > );
> > >
> > > 그렇게 어려운 소스는 아닌데 그놈의 에러 때문에 정신이 없군요.db table과는 일치하는 것 같은
> 데
> > "n
> > > um " 때문에 그런것도 아닌것 같구 ....
> > > 고수님들의 많은 도움 부탁드립니다.제발 ....산사람 다시 한번 살려 주시는 셈치고
> > >
> > > 꾸벅
|