2012-07-26 4 views
1

나는 이것으로 너무 좌절하고있다. mysqli를 사용하여 열 값을 포함하는 배열을 만들려고합니다. 지금은 반환되는 내용을 반향 출력 할 때 아무 것도 인쇄하지 않습니다. 나는 이것을 이해할 수없는 많은 것들을 시도했다. 모든mysqli에서 stmt_fetch를 결과를 배열로 만드는 방법

<?php 
class Database { 

    public $dbHost = ''; 
    public $dbUser = ''; 
    public $dbPass = ''; 
    public $dbName = ''; 

    public $db; 

    public function __construct(){ 
     $this->dbConnect(); 
    } 

    public function dbConnect(){ 

     $this->db = new mysqli($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName); 

     /* check connection */ 
     if (mysqli_connect_errno()){ 
      printf("Connect failed: %s\n", mysqli_connect_error()); 
      exit(); 
     }else{ 
      echo 'connection made'; 
     } 
    } 

    public function q($sql){ 
     $query = $sql; 
     self::preparedStatement($query); 
    } 

    public function preparedStatement($query){ 
     $i= 0; //index 
     $result = array(); 

     if ($stmt = $this->db->prepare($query)){ 

      /* execute statement */ 
      if($stmt->execute()) { 
       $stmt->bind_result($name); 
       while($stmt->fetch()) { 
        $result[0] = $name; 
       } 
      } else 
       echo "error"; 

      /* close statement */ 
      $stmt->close(); 
     } else { 
      echo "Prepare failed: (" . $stmt->errno . ") " . $stmt->error; 
     } 

     return $result; 
    } 

    public function __destruct(){} 

} 


### Test code 

$db = new Database(); 
$res = $db->q("SELECT name FROM test"); 
echo $res[0]; 

?> 

답변

1

첫째, 당신의 while 루프에서 0를 제거합니다. 값을 하나씩 배열에 저장하려면 배열의 첫 번째 값을 항상 덮어 쓰고 fetch()에서 가져온 값을 임시 배열에 저장해야합니다.

while($row = $stmt->fetch(MYSQLI_ASSOC)) { 
    $result[] = $row['name']; 
} 

초, 당신은 이것에 대해 인터넷 검색을하는 방법과 다른 사람을하고있는 예보고 시간을 보내주세요 어떤 값을 반환하므로

return self::preparedStatement($query); 

에 마지막 문을 변경하려면 q() 기능이 필요합니다 .

+0

죄송합니다. 저는 인터넷 검색을하고 있었고 테스트를 거친 후에 0을 입력했고 게시하기 전에 되돌릴 수 없었습니다. 내 문제가 내 q() 함수에서 반환되지 않았습니다. 정말 고맙습니다 –

관련 문제