2012-02-05 3 views
0

각각 id이름이 인 서비스 배열을 반환하는 함수가 필요합니다. 내가 mysqli 문서에서 찾아 봤는데,하지만 이것보다 더 똑똑한 해결책이 존재하는지 확인할 수 없습니다 : 내가 결과 배열 나 자신을 구축해야한다는 조금 성가신 것 같다쿼리에서 개체 배열 반환?

function getServices() { 
    $services = array(); 

    $stmt = $this->db->prepare('SELECT id, name FROM services WHERE client_id=?'); 
    $stmt->bind_param("i", $this->clientId); 
    $stmt->execute(); 
    $stmt->bind_result($id, $name); 
    while ($stmt->fetch()) { 
     $service = array(); 
     $service['id'] = $id; 
     $service['name'] = $name; 
     $services[] = $service; 
    } 
    $stmt->close(); 

    return $services; 
} 

합니다. mysql이 선택된 열을 사용하여 배열을 빌드하게하는 방법이 있습니까?

+0

이 코드를 사용할 수없는 이유가 없습니다. mysql 빌드 버전이 존재하더라도 (나는 의심 스럽지만 확실하지는 않다. 나는 항상이 방법을 사용했다), 변경할 필요가 없다. – axiomer

+0

@ 19greg96 - OP는 mysql이 아닌 mysqli를 사용합니다. –

답변

2

내가 mysqli를 사용하지 않는 옵션을 가지고 있지만, inspecting the docs에서, 나는이 일을한다고 생각 : 따라서

$stmt = $this->db->prepare('SELECT id, name FROM services WHERE client_id=?'); 
$stmt->bind_param("i", $this->clientId); 
$stmt->execute(); 

$result = $stmt->get_result(); 
$services = $result->fetch_all(MYSQLI_ASSOC); 

$stmt->close(); 

return $services; 

사용 :

PHP> = 5.3.0입니다.

+0

솔루션에 감사드립니다. 안타깝게도 내 서버는 PHP 5.2를 실행하고 있으므로'get_result' 메소드가 존재하지 않습니다. – dhrm

+1

@DennisMadsen : 죄송합니다. 이 경우에는 mysqli_stmt를 확장하여 직접 구현할 수있다. 또는 실제로 mysqli 대신에'PDO'를 사용하십시오. –

1

스위치 PDO에, 당신은

PDOStatement::fetchAll()

+0

Seconded. fetch 인자'$ stmt-> fetchAll (PDO :: FETCH_ASSOC)'를 전달하여 연관 배열을 반환 할 수 있습니다. 다른 옵션은 많이 있습니다. http://php.net/manual/en/pdostatement.fetchall.php –