在Mysqli准备语句中返回一个数组

时间:2012-03-02 04:53:40

标签: php arrays mysqli prepared-statement fetch

我的数据库类中有一个函数,它返回来自特定国家/地区的人的 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 个答案:

答案 0 :(得分:9)

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;