채택완료
에러가 나요 - 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 포인트
2018-01-21 (일) 15:42:23
mysql_num_rows 여기를 이렇게 수정 sql_num_rows
답변에 대한 댓글 6개
txron
2018-01-21 (일) 15:55:21
janedoe
2018-01-21 (일) 16:58:47
작은별님 mysql_num_rows가 왜 안되는 건지 물어봐도 될까요?php를 깊이 아는 사람이 아니라 좀 궁금해서요... 한 수 가르침을 주시면 감사하겠습니다
2018-01-21 (일) 17:32:48
부연 설명은 제가 조금 해 드릴게요.
그누보드 같은 경우에는 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 관련 함수 정의가 되어 있습니다.
그누보드 같은 경우에는 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 관련 함수 정의가 되어 있습니다.
janedoe
2018-01-21 (일) 18:01:15
@port 감사합니다! 덕분에 좋은 공부가 되었습니다! 그런데 혹시 저런 함수 목록같은 건 어디서 구할까요? 매번 답답할 때가 많아서 두고 보면 좋을 것같아서요...
janedoe
2018-01-21 (일) 15:53:22
$sql.= " WHERE (wr_1 between 에서 wr_1 과 between 사이에 아무런 조건이 없나요? 한 번 확인해보세요.
답변에 대한 댓글 1개
2018-01-21 (일) 15:28:37
Copy
$sql.="~~~";
를 사용하실 때
Copy
$sql.=" ~~~";
이렇게 문자열 시작부분에 공백 하나 두고 시작해주세요.
저대로 하시면 select * from g5_write_???WHERE
이렇게 sql이 붙어버려요.
답변에 대한 댓글 2개
txron
2018-01-21 (일) 15:45:19
답변 주셔서 감사합니다.
알려주신대로 아래와 같이 해봤지만 에러가 동일합니다.
그리고 한 칸을 띄워야 함을 잘 배웠습니다.
[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]
알려주신대로 아래와 같이 해봤지만 에러가 동일합니다.
그리고 한 칸을 띄워야 함을 잘 배웠습니다.
[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]
2018-01-21 (일) 16:04:08
sql_query를 보내기 전에 echo로 출력을 한 번 해보고, 그대로 phpmyadmin에 넣어보세요.
그 후 출력 결과와 에러를 보여주시면 감사하겠습니다.
@txron
그 후 출력 결과와 에러를 보여주시면 감사하겠습니다.
@txron
janedoe
2018-01-21 (일) 15:13:01
$result 값이 null 이 되서 에러가 나는게 아닐까 싶은데요...
$sql = "select * from g5_write_$bo_table"; 요거를
$sql = "select * from ".$g5['write_prefix'].$tbo_table;요렇게 한 번 바꿔보세요
답변에 대한 댓글 1개
답변을 작성하려면 로그인이 필요합니다.
작은별님 정말 감사드립니다.