簡體   English   中英

如何將MySQLi結果集加載到二維數組中?

[英]How to load MySQLi result set into two-dimensional array?

我遇到了mysqli結果集的問題。 我有一個包含大量消息的表。 每個表行代表一條消息。 我有一些列,如ID,標題,正文和'公共'。 公共列包含布爾值,用於指定是向所有人顯示消息,還是僅向發布消息的人顯示消息。 我有一個頁面,我想顯示所有公共消息,如果您單擊一條消息,您將獲得一個包含單個消息的頁面,以及一些額外的選項。 為此,我想將mysqli查詢的結果加載到二維數組中。 這意味着一組消息,每條消息都是一個數組本身,ID,標題,正文等作為列。

所以我開始使用以下代碼。 '$ link'變量包含mysqli連接(女巫工作正常)。

$result = $link->query("SELECT * FROM messages WHERE public = '1'");
$array = $result->fetch_assoc();

print_r($array);

這只會產生一維數組,其中包含最新消息。 所以我嘗試了以下while循環:

$result = $link->query("SELECT * FROM messages WHERE public = '1'");

while($message = $result->fetch_assoc()){
 $title = $message['title'];
 $body = $message['body'];
 # etc... 
}

這在某種程度上起作用:它顯示所有消息,但不將它們放在一個數組中(我想要根據ID執行任務,以及消息數組在包含數組中的位置。)有人知道如何轉換這個那種查詢結果變成了一個漂亮的二維數組? 還是一個完全不同的,漂亮的方式來解決這個問題? 提前致謝。

PS。 對不起我的英語,我不是母語人士。

你幾乎就在那里,你只需要改變一些事情:

$result = $link->query("SELECT * FROM messages WHERE public = '1'");
$messages = array();
while($message = $result->fetch_assoc()){
   $messages[] = $message;
}

這將導致類似這樣的事情:

array(
  0 => array('message' => ..., 'subject' => ...), 
  1 => array('message' => ..., 'subject' => ...), 
  2 => array('message' => ..., 'subject' => ...), 
);

如果您想將ID作為鍵,請執行以下操作:

$messages = array();
while($message = $result->fetch_assoc()){
   $messages[ $message["id"] ] = $message;
}

這將導致:

array(
  123 => array('message' => ..., 'subject' => ...), 
  456 => array('message' => ..., 'subject' => ...), 
  789 => array('message' => ..., 'subject' => ...), 
);

在PHP 5.3中,您還獲得了一個新方法,它與我發布的第一個代碼示例相同:

$messages = $result->fetch_all(MYSQLI_ASSOC);

如果我找到了你,你想要實現以下產生的東西:

$result = $link->query("SELECT * FROM messages WHERE public = '1'");

$messages = array();
while($singleMessage = $result->fetch_assoc()){
  $messages[$singleMessage]['title'] = $singleMessage['title'];
  $messages[$singleMessage]['body'] = $singleMessage['body'];
}

這將使用ID作為鍵來獲得二維數組。

你的最終陣列必須如何?

試試這個:

$result = $link->query("SELECT title, body FROM messages WHERE public = '1'");
$array = array();
while ($array[] = mysql_fetch_assoc($result)) {}

暫無
暫無

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

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