簡體   English   中英

如何將多個查詢的結果添加到PDO中的數組?

[英]How to add results of multiple queries to an array in PDO?

下面是我的代碼

$stmt = $db->prepare("SELECT * FROM inbox ORDER BY `date` DESC ");
$stmt->execute(array());
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);        

$uniques = count(array_unique($row, SORT_REGULAR)); 

for ($i=0; $i < $uniques; $i++) {

    $inbox_id = $row[$i]["inbox_id"];

    $stmt = $db->prepare("SELECT * FROM messages WHERE inbox_id=? AND seen=? ORDER BY `date` DESC");
    $stmt->execute(array($inbox_id, 0));
    $row_msg = $stmt->fetchAll(PDO::FETCH_ASSOC);                
}

return $row_msg;

但這也不是返回所有數據,僅返回第一次迭代得到的值。

您可以使用:

$row_msg[$i] = $stmt->fetchAll(PDO::FETCH_ASSOC);

您的PDO語句在循環內的每一輪都是准備的,這不是必須的,我希望inbox_id列是inbox表中的主鍵:

$stmt1 = $db->query("SELECT `inbox_id` FROM inbox ORDER BY `date` DESC ");
$stmt2 = $db->prepare("SELECT * FROM messages WHERE inbox_id=? AND seen=0 ORDER BY `date` DESC");
while($id = $stmt1->fetchColumn(0)) {
    $stmt2->execute(array($id));
    $row_msg[$id] = $stmt2->fetchAll(PDO::FETCH_ASSOC);
}    
return $row_msg;

如果您不希望使用多維數組,則可以通過在循環內(而不是帶有$ row_msg [$ id]的行)使用array_merge()( PHP手冊:array_merge )將行添加到結果數組中:

$row_msg = array_merge($row_msg, $stmt2->fetchAll(PDO::FETCH_ASSOC));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM