2012-03-02 42 views
3

我在我的数据库类中有函数返回来自特定国家(如西班牙)的人的id。但由于某种原因,我只能得到一个价值,但同一个国家有很多人。这里是功能:在mysqli语句中返回一个数组

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); 

有谁知道如何返回结果数组?我试图将该变量定义为数组,但仍然不起作用...

+0

如果你的bug自己与阅读手册页,你可以看到读取几行的例子。 – 2012-03-02 05:27:39

+3

我做了,但我不清楚... – 2012-03-02 06:21:16

回答

7

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; 
+0

虽然我必须使用fetch_array()... – 2012-03-02 06:27:39

+0

检出文档:http://www.php.net/manual/en/mysqli- stmt.fetch.php – 2012-03-13 22:47:09