Mysqli预处理语句:将行存储在数组中,稍后循环遍历此数组

时间:2015-02-03 05:54:54

标签: php arrays mysqli while-loop

我使用预准备语句来选择数据库中的行。随后我想使用while循环回显各行。这很好用,直到我尝试在while循环的执行中使用新的查询(这是必要的,因为我提取了userID,我需要将其转换为用户名。我通过在users表上执行查询来做到这一点,但是当我尝试这个时,我的代码不会运行)。我想我可以通过将所有行存储在一个数组中来解决这个问题,然后在我的代码循环中通过这个数组。但是,我似乎无法弄清楚如何循环遍历此数组的所有索引并提取循环的每个实例中的行的所有字段。

非常感谢!这是我的代码:

$results = array();

$stmt = $db->prepare("SELECT admissionID,userID,description,link,postingdate,compensation FROM replies WHERE projectID=?");
$stmt->bind_param('i',$projectID);
$stmt->execute();
$stmt->bind_result($admissionID,$userID,$description,$link,$postingdate,$compensation);
while($row = $stmt->fetch()){
    $results[] = $row;
}

foreach($results as $result) {
    echo $result['admissionID'];
}

1 个答案:

答案 0 :(得分:0)

这就是你需要做的事情

 ids=array();
 while($row = $stmt->fetch()){
    ids[]= $row['userID'];
 }

ids是一个数组,将包含您需要的所有ID。 但我会说“不要那样做”,只需使用表连接来获取用户名例如可能是你的情况就好了

SELECT   replies.admissionID,users.name,replies.userID,replies.description,
replies.link,replies.postingdate,replies.compensation FROM replies, users 
WHERE 
users.name=replies.userID
and replies.projectID=?