возврат массива в подготовленном операторе Mysqli

У меня есть функция в моем классе базы данных, которая возвращает 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);

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


person Sokhrat Sikar    schedule 02.03.2012    source источник
comment
Если вы заморачиваетесь чтением справочной страницы, вы можете увидеть пример выборки нескольких строк.   -  person Your Common Sense    schedule 02.03.2012
comment
Я сделал, и это было не ясно для меня...   -  person Sokhrat Sikar    schedule 02.03.2012


Ответы (1)


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

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

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

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

с этим:

$arr = array();
$stmt->bind_result($id);
while ( $stmt->fetch() ) {
    $arr[] = $id;
}
return $arr;
person Mike Causer    schedule 02.03.2012