mysqli_num_rows() 오류

mysqli_num_rows() 오류

QA

mysqli_num_rows() 오류

답변 2

본문

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() 함수 내용을 봐야 알 수 있습니다.

<?php
header('Content-Type: text/html; charset=UTF-8');

$db_conn = mysqli_connect("localhost", "root", "1234", "1234");
$db_conn->set_charset("utf8");
//if (!$db_conn) {
//    $error = mysqli_connect_error();
//    $errno = mysqli_connect_errno();
//    print "$errno: $error\n";
//    exit();
//}
//mysqli_close($db_conn);
function mq($sql)
{
    global $db_conn;
    return $db_conn->query($sql);
}

?>

이부분입니다 ㅠ #dbconfig.php

$sql = mq("select * from board");
               
                  if( $row_num)
                      $row_num = mysqli_num_rows($sql); //게시판 총 레코드 수
                  else
                      $row_num=0;

Call to a member function fetch_array() 

에러 자체는 쿼리의 결과 카운트가 0인 경우에 나오는 경우입니다

db의 데이터가 제대로 들어가있는지, 어떤 db인지 확인하고, 그 db에 맞는 문법으로 쿼리가 질의되고 있는지 확인해보세요

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 26
© SIRSOFT
현재 페이지 제일 처음으로