2010-08-10 4 views
0

나는 mysqli에서 손을 썼다.mysqli를 사용하여 데이터 가져 오기

절차 적 mysql을 사용하면 코드가 결과를 잘 표시합니다. 그러나, OOP mysqli로 전환 한 후에, 나는 mysqli로 코드를 변환하려고 시도했는데, 따옴표가 없다고 말한다. 코드에 문제가 있습니까?

/* the database object */ 
     private $_db; 

     public function __construct($db=NULL) 
     { 
      if(is_object($db)) 
      { 
       $this->_db = $db; 
      } 
      else 
      { 

       $this->_db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
      } 
     } 

     public function displayQuotes() 
     { 
      $sql = "SELECT cQuotes, vAuthor, cArabic, vReference 
          FROM thquotes 
          ORDER BY RAND() 
          LIMIT 1;"; 

        try { 

         $query = $this->_db->prepare($sql); 
         $query->execute(); 
         $query->store_result(); 

         /* bind variables to prepared statement */ 
         $query->bind_result($cQuotes, $vAuthor, $cArabic, $vReference); 


         if(!$query->num_rows==0) 
         { 
         while($row = $query->fetch()) 
         { 
          //echo $this->formatQuotes($row); 
          $formatHTML = new formatHTML(); 
          echo $formatHTML->formatQuotes($row); 
         } 


         } 
         else 
         { 
          echo "There are no Quotes!"; 
         } 
         $query->free_result(); 
         $query->close(); 
        } 
        catch (Exception $ex){ 

         echo "Something went wrong " . $ex; 
        } 

     } 

답변

0

당신은 열

http://www.php.net/manual/en/mysqli-stmt.bind-result.php

난 그냥 레코드의 수가이 같은 0이면 확인하기 전에 바인딩을 시도
+0

결과 집합 변수를 결합하지 않았다'$ stmt-> bind_result ($의 COL1을, $ col2, $ col3, col4);'여전히 'no quotes'가 표시됩니다. 이게 올바른 방법일까요? 또는 나는 무엇인가 놓치고 있냐? – input

+0

'if (! $ query-> num_rows() == 0)'를'if (! $ query-> num_rows == 0)'로 변경하십시오. 이것은 메소드가 아니라 속성입니다. – Mchl

+0

그랬습니다. 여전히 작동하지 않습니다. 변경 사항으로 코드를 업데이트했습니다. 확인해주십시오. – input

관련 문제