возвращение массива в Mysqli подготовленный оператор - PullRequest
4 голосов
/ 02 марта 2012

В моем классе базы данных есть функция, которая возвращает id людей из определенной страны, такой как Испания.Но по какой-то причине я получаю только одно значение, но в одной стране много людей.вот функция:

Class DbAb {
private $db;

public function sameCountry($country) {

    $query = "SELECT id FROM users WHERE country = ? ";
    $stmt = $this->db->prepare($query);
    $stmt->bind_param("s",  $country);
    if ($stmt->execute()) {

        $stmt->bind_result($sameCountry);
        $stmt->fetch();

        return $sameCountry;
    }
    return false;
}



}

$sameC = new DbAb();

$samePeople = $sameC->samecountry("spain");

print_r($samePeople);

Кто-нибудь знает, как вернуть массив результатов?Я пытался определить переменную как массив, но все еще не работает ...

1 Ответ

9 голосов
/ 02 марта 2012

bind_result ($ var) + fetch () вставляет одну строку в переменную $ var.

Если вы хотите вернуть массив идентификаторов из вашего метода, вам нужно сначала создать пустой массив, затем для каждой строки вставить в него.

например. замени это:

$stmt->bind_result($sameCountry);
$stmt->fetch();
return $sameCountry;

с этим:

$arr = array();
$stmt->bind_result($id);
while ( $stmt->fetch() ) {
    $arr[] = $id;
}
return $arr;
...