mysqli_num_rows() 오류
본문
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in \board.php on line 51
Fatal error: Uncaught Error: Call to a member function fetch_array() on bool in C:\laragon\www\homepage\board\board.php:65 Stack trace: #0 {main} thrown in \board.php on line 65
라는 에러가 발생하면서 데이터베이스의 데이터값을 불러오지 못하고 있습니다 ㅠㅠ
<div id="fullpage" class="board_main">
<div class="section board_box" style="background-color: #313131; padding: 120px; width: 100%;">
<div id="write_btn">
<a href="./write.php"><button>글쓰기</button></a>
</div>
<table class="list-table">
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">제목</th>
<th scope="col">글쓴이</th>
<th scope="col">작성일</th>
<th scope="col">조회수</th>
</tr>
</thead>
<?php
if(isset($_GET['page'])){
$page = $_GET['page'];
}else{
$page = 1;
}
$sql = mq("select * from board");
$row_num = mysqli_num_rows($sql); //게시판 총 레코드 수
$list = 5; //한 페이지에 보여줄 개수
$block_ct = 5; //블록당 보여줄 페이지 개수
$block_num = ceil($page/$block_ct); // 현재 페이지 블록 구하기
$block_start = (($block_num - 1) * $block_ct) + 1; // 블록의 시작번호
$block_end = $block_start + $block_ct - 1; //블록 마지막 번호
$total_page = ceil($row_num / $list); // 페이징한 페이지 수 구하기
if($block_end > $total_page) $block_end = $total_page; //만약 블록의 마지박 번호가 페이지수보다 많다면 마지박번호는 페이지 수
$total_block = ceil($total_page/$block_ct); //블럭 총 개수
$start_num = ($page-1) * $list; //시작번호 (page-1)에서 $list를 곱한다.
$sql2 = mq("select * from board order by idx desc limit $start_num, $list");
while($board = $sql2->fetch_array()){
$title=$board["title"];
if(strlen($title)>30)
{
$title=str_replace($board["title"],mb_substr($board["title"],0,15,"utf-8")."...",$board["title"]);
}
$sql3 = mq("select * from reply where con_num='".$board['idx']."'");
$rep_count = mysqli_num_rows($sql3);
?>
<tbody>
<tr>
<td width="70"><?php echo $board['idx']; ?></td>
<td width="470"><?php
//$lockimg = "<img src='./img/lock.png' alt='lock' title='lock'/>";
$lockimg = "[비밀글] ";
if($board['lock_post']=="1")
{ ?>
<a href='./ck_view.php?idx=<?php echo $board["idx"];?>'><?php echo $lockimg, $title; ?></a>
<?php } else { ?>
<?php
$boardtime = $board['date']; //$boardtime변수에 board['date']값을 넣음
$timenow = date("Y-m-d"); //$timenow변수에 현재 시간 Y-M-D를 넣음
if($boardtime==$timenow){
$img = "<img src='./img/new_icon.png' alt='new' title='new' style='margin-left: 10px;'/>";
}else{
$img ="";
}
?>
<a href='./view.php?idx=<?php echo $board["idx"]; ?>'><?php echo $title; }?><span class="re_ct">[<?php echo $rep_count; ?>]<?php echo $img; ?></span></a></td>
<td width="120"><?php echo $board['name']?></td>
<td width="140"><?php echo $board['date']?></td>
<td width="90"><?php echo $board['hit']; ?></td>
</tr>
</tbody>
<?php } ?>
</table>
<!---페이징 넘버 --->
<div id="page_num">
<ul>
<?php
if($page <= 1)
{ //만약 page가 1보다 크거나 같다면
echo "<li class='fo_re'>처음</li>"; //처음이라는 글자에 빨간색 표시
}else{
echo "<li><a href='?page=1'>처음</a></li>"; //알니라면 처음글자에 1번페이지로 갈 수있게 링크
}
if($page <= 1)
{ //만약 page가 1보다 크거나 같다면 빈값
}else{
$pre = $page-1; //pre변수에 page-1을 해준다 만약 현재 페이지가 3인데 이전버튼을 누르면 2번페이지로 갈 수 있게 함
echo "<li><a href='?page=$pre'>이전</a></li>"; //이전글자에 pre변수를 링크한다. 이러면 이전버튼을 누를때마다 현재 페이지에서 -1하게 된다.
}
for($i=$block_start; $i<=$block_end; $i++){
//for문 반복문을 사용하여, 초기값을 블록의 시작번호를 조건으로 블록시작번호가 마지박블록보다 작거나 같을 때까지 $i를 반복시킨다
if($page == $i){ //만약 page가 $i와 같다면
echo "<li class='fo_re'>[$i]</li>"; //현재 페이지에 해당하는 번호에 굵은 빨간색을 적용한다
}else{
echo "<li><a href='?page=$i'>[$i]</a></li>"; //아니라면 $i
}
}
if($block_num >= $total_block){ //만약 현재 블록이 블록 총개수보다 크거나 같다면 빈 값
}else{
$next = $page + 1; //next변수에 page + 1을 해준다.
echo "<li><a href='?page=$next'>다음</a></li>"; //다음글자에 next변수를 링크한다. 현재 4페이지에 있다면 +1하여 5페이지로 이동하게 된다.
}
if($page >= $total_page){ //만약 page가 페이지수보다 크거나 같다면
echo "<li class='fo_re'>마지막</li>"; //마지막 글자에 긁은 빨간색을 적용한다.
}else{
echo "<li><a href='?page=$total_page'>마지막</a></li>"; //아니라면 마지막글자에 total_page를 링크한다.
}
?>
</ul>
</div>
</div>
</div>
$row_num = mysqli_num_rows($sql); //게시판 총 레코드 수
이부분과
while($board = $sql2->fetch_array()){
이부분이 에러가나는데 도무지 해결점을 못찾고 있습니다.
ps. 가비아나 카페24 닷홈 등 호스팅서버에서 진행할 시에는 잘 되는데,
라라곤이나 apmsetup에서 진행하면 되지 않네요...
!-->답변 2
mq() 함수 내용을 봐야 알 수 있습니다.
Call to a member function fetch_array()
에러 자체는 쿼리의 결과 카운트가 0인 경우에 나오는 경우입니다
db의 데이터가 제대로 들어가있는지, 어떤 db인지 확인하고, 그 db에 맞는 문법으로 쿼리가 질의되고 있는지 확인해보세요
답변을 작성하시기 전에 로그인 해주세요.