테스트 사이트 - 개발 중인 베타 버전입니다

에러가 나요 - Warning: mysql_num_rows():.. 채택완료

txron 7년 전 조회 8,411

안녕하세요.
그누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

 

</strong></p>

<p><?php</p>

<p> 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";</p>

<p>     $sql  = "select * from g5_write_$bo_table";</p>

<p> if ($fr_date && $to_date) {

  $sql .= "WHERE (wr_1 between '$fr_date' and '$to_date')";

   }</p>

<p> if ($gubun) {

  $sql .= "AND ca_name like '$gubun'";

   }</p>

<p>  $sql .= "order by $sort1 $sort2";

 $result = sql_query($sql);

 $total_count = mysql_num_rows($result); // <--------- line 106 - Warning 부분</p>

<p> $rows = 500;

     $pagerows    = 30;

     $printpage   = ceil($total_count / $pagerows);

     $firstpage   =  0;</p>

<p> $total_page  = ceil($total_count / $rows);

 if ($page == "") { $page = 1; }

 $from_record = ($page - 1) * $rows;</p>

<p> $rank = ($page - 1) * $rows;</p>

<p> $sql = $sql . " limit $from_record, $rows ";

 $result = sql_query($sql);</p>

<p> $qstr = "page=$page&sort1=$sort1&sort2=$sort2";

 $qstr1 = "fr_date=$fr_date&to_date=$to_date&sel_ca_id=$sel_ca_id";</p>

<p>?></p>

<p><strong>

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

답변 4개

채택된 답변
+20 포인트
7년 전

mysql_num_rows 여기를 이렇게 수정 sql_num_rows

로그인 후 평가할 수 있습니다

답변에 대한 댓글 6개

t
txron
7년 전
잘 작동 됩니다.
작은별님 정말 감사드립니다.
j
janedoe
7년 전
작은별님 mysql_num_rows가 왜 안되는 건지 물어봐도 될까요?php를 깊이 아는 사람이 아니라 좀 궁금해서요... 한 수 가르침을 주시면 감사하겠습니다
p
port
7년 전
부연 설명은 제가 조금 해 드릴게요.
그누보드 같은 경우에는 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 관련 함수 정의가 되어 있습니다.
작은별
7년 전
잘 설명해주셨네요~
j
janedoe
7년 전
@port 감사합니다! 덕분에 좋은 공부가 되었습니다! 그런데 혹시 저런 함수 목록같은 건 어디서 구할까요? 매번 답답할 때가 많아서 두고 보면 좋을 것같아서요...
p
port
7년 전
https://www.w3schools.com/php/php_ref_mysqli.asp
여기 참조해 보세요.

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

j
7년 전

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

t
txron
7년 전
janedoe님 답변 감사드립니다.

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

베원
7년 전

</p>

<p>$sql.="~~~";</p>

<p>

를 사용하실 때

 

</p>

<p>$sql.=" ~~~";</p>

<p>

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

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

이렇게 sql이 붙어버려요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

t
txron
7년 전
답변 주셔서 감사합니다.
알려주신대로 아래와 같이 해봤지만 에러가 동일합니다.
그리고 한 칸을 띄워야 함을 잘 배웠습니다.
[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]
베원
7년 전
sql_query를 보내기 전에 echo로 출력을 한 번 해보고, 그대로 phpmyadmin에 넣어보세요.
그 후 출력 결과와 에러를 보여주시면 감사하겠습니다.

@txron

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

j
7년 전

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

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

t
txron
7년 전
답변 감사합니다.
하지만 변화 없이 에러나 납니다.

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

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

로그인