채택완료

에러가 나요 - Warning: mysql_num_rows():..

안녕하세요.
그누4 장돌벵이님의 스킨을 그누5로 바꾸면서 아래와 같이 에러가 뜹니다.
고수님들 알려주시길 부탁 드리겠습니다.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/hosting_users/id_100/www/home/skin/board/easy_jb_5/fr_and_to_date.php on line 106

 

Copy
<?php

 if (!$fr_date)    $fr_date =  substr(date("Ymd", time()),0,6)."01";
 if (!$to_date)    $to_date = date("Ymd", time());
 if ($sort1 == "") $sort1 = "wr_1";
     if ($sort2 == "") $sort2 = "desc";

     $sql  = "select * from g5_write_$bo_table";

 if ($fr_date && $to_date) {
  $sql .= "WHERE (wr_1 between '$fr_date' and '$to_date')";
   }

 if ($gubun) {
  $sql .= "AND ca_name like '$gubun'";
   }

  $sql .= "order by $sort1 $sort2";
 $result = sql_query($sql);
 $total_count = mysql_num_rows($result); // <--------- line 106 - Warning 부분

 $rows = 500;
     $pagerows    = 30;
     $printpage   = ceil($total_count / $pagerows);
     $firstpage   =  0;

 $total_page  = ceil($total_count / $rows);
 if ($page == "") { $page = 1; }
 $from_record = ($page - 1) * $rows;

 $rank = ($page - 1) * $rows;

 $sql = $sql . " limit $from_record, $rows ";
 $result = sql_query($sql);

 $qstr = "page=$page&sort1=$sort1&sort2=$sort2";
 $qstr1 = "fr_date=$fr_date&to_date=$to_date&sel_ca_id=$sel_ca_id";

?>
|

답변 4개 / 댓글 10개

채택된 답변
+20 포인트

mysql_num_rows 여기를 이렇게 수정 sql_num_rows

답변에 대한 댓글 6개

잘 작동 됩니다.
작은별님 정말 감사드립니다.
작은별님 mysql_num_rows가 왜 안되는 건지 물어봐도 될까요?php를 깊이 아는 사람이 아니라 좀 궁금해서요... 한 수 가르침을 주시면 감사하겠습니다
부연 설명은 제가 조금 해 드릴게요.
그누보드 같은 경우에는 mysql 연동과 관련된 명령어를 그대로 사용하지 않고 함수로 만들어 놓았구요. 그걸 호출해서 사용하고 있습니다.
원래는 mysql의 열(row)의 개수를 알아내는데는
mysqli_num_rows() 함수를 이용하는데요.
이걸 바로 사용하지 않고 함수로 된 sql_num_rows() 함수를 호출해서 사용하고 있습니다.
이 함수는 위치는 lib/common.lib.php 파일의1560줄 정도에
function sql_num_rows($result)
{
if(function_exists('mysqli_num_rows') && G5_MYSQLI_USE)
return mysqli_num_rows($result);
else
return mysql_num_rows($result);
}
부분에서 호출하고 있습니다.
common.lib.php 파일에 대부분의 mysql 관련 함수 정의가 되어 있습니다.
잘 설명해주셨네요~
@port 감사합니다! 덕분에 좋은 공부가 되었습니다! 그런데 혹시 저런 함수 목록같은 건 어디서 구할까요? 매번 답답할 때가 많아서 두고 보면 좋을 것같아서요...

 $sql.= " WHERE (wr_1 between 에서 wr_1 과 between  사이에 아무런 조건이 없나요? 한 번 확인해보세요.

답변에 대한 댓글 1개

janedoe님 답변 감사드립니다.
Copy
$sql.="~~~";

를 사용하실 때

Copy
$sql.=" ~~~";

이렇게 문자열 시작부분에 공백 하나 두고 시작해주세요.

저대로 하시면 select * from g5_write_???WHERE

이렇게 sql이 붙어버려요.

답변에 대한 댓글 2개

답변 주셔서 감사합니다.
알려주신대로 아래와 같이 해봤지만 에러가 동일합니다.
그리고 한 칸을 띄워야 함을 잘 배웠습니다.
[code]
$sql = " select * from g5_write_$bo_table ";

if ($fr_date && $to_date)
{
$sql.= " WHERE (wr_1 between '$fr_date' and '$to_date') ";
}

if ($gubun) { $sql.= " AND ca_name like '$gubun' "; }

$sql.= " order by $sort1 $sort2 ";
$result = sql_query($sql);
$total_count = mysql_num_rows($result);
[/code]
sql_query를 보내기 전에 echo로 출력을 한 번 해보고, 그대로 phpmyadmin에 넣어보세요.
그 후 출력 결과와 에러를 보여주시면 감사하겠습니다.

@txron

$result 값이 null 이 되서 에러가 나는게 아닐까 싶은데요...

$sql  = "select * from g5_write_$bo_table"; 요거를

$sql  = "select * from ".$g5['write_prefix'].$tbo_table;요렇게 한 번 바꿔보세요

답변에 대한 댓글 1개

답변 감사합니다.
하지만 변화 없이 에러나 납니다.

답변을 작성하려면 로그인이 필요합니다.