2017-01-14 4 views
0

아래의 코드는 실행 중 경고를 생성한다. 경고 : mysqli_fetch_assoc()은 s 매개 변수 1이 mysqli_result 일 것을 기대한다. 어떻게 해결할 수 있을까?이 경고를 해결하는 방법 : mysqli_fetch_assoc()는 매개 변수 1이 mysqli_result 일 것을 기대한다. 이것을 해결하는 방법

<?php 
    require '../smarty3/libs/Smarty.class.php'; 
    $smarty = new Smarty; 
    class conn 
    { 
       public $conn = ''; 
       public function fetchAll() 
       { 
        $sql = "SELECT * FROM test" ; 
        if(mysqli_query($this->conn,$sql)) 
        { return 'success'; } 
       else{ return 'error'; } 
       } 
    } 
    $db = new conn(); 
    $record = $db->fetchAll(); 
    if($record != 'error'){ 
     while($row = mysqli_fetch_assoc($record)) 
     { 
      header('location : view.tpl'); 
     } 
    }else{ echo "No Records Found";} 
    $smarty->display('view.tpl'); 
    ?> 
    **View.tpl** 
    <table align = "center"> 
     {section name = i loop = $row} 
      <tr> <td> {$smarty.section.i.rownum} </td> 
       <td> {$row[i].name} </td> 
       <td> {$row[i].country} </td> 
      </tr> 
     {/section} 
    </table> 

모든 좋은 답변에 감사드립니다.

답변

0

은 mysql 리소스가 아닌 문자열 (success 또는 error)을 반환하기 때문입니다. 이제 fetchAll() 방법은 성공적인 쿼리에 mysqli_result을 반환합니다

class conn 
     { 
        public $conn = ''; 
        public function fetchAll() 
        { 
         $sql = "SELECT * FROM test" ; 
         $r = mysqli_query($this->conn,$sql) 
         if($r) 
         { 
         return $r; } 
        else{ return 'error'; } 
        } 
     } 

, 또는 'error' 제 생각에는

하지 않을 경우,이에 가장 좋은 방법이 아니다 :

에 코네티컷 클래스를 변경하는 것이 좋습니다 오류를 처리합니다. try/catch 블록을 살펴보고 스택에서 클래스의 오류를 "던질"수있는 방법을 고려하십시오.

+0

작동합니다. 감사 – himani