[英]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.