在Mysqli预处理语句中返回数组

4

我在我的数据库类中有一个函数,返回来自特定国家(例如西班牙)的人的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);

有人知道如何返回一个结果数组吗?我已经尝试将变量定义为一个数组,但仍然不起作用...


如果你烦恼于阅读手册页面,你可以看到获取多行的示例。 - Your Common Sense
3
我做了,但我没有清楚地理解...... - Sokhrat Sikar
1个回答

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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接