簡體   English   中英

將MySQL查詢結果存儲到二維數組中

[英]Store MySQL query result into a two-dimensional array

我沒有看到類似的問題,所以我要問一個新的問題。 我也在嘗試使用循環和數組,因此如果這是一個很愚蠢的問題或很糟糕的代碼,我們深表歉意。 我可以用大約50行以上的代碼來達到我想要的結果,但是它甚至更不雅致(我基本上每個查詢都使用硬編碼的行,而不是使用變量)。 因此,我正在嘗試學習如何更簡潔地編寫代碼以使其更有效。 我可能走錯了路...

我有一個具有以下基本結構的表:

[id / username / email / content / side / category / rating]

邊可以是“是”或“否”,類別可以是“紅色”,“藍色”或“綠色”。 這些在提交表單中受到限制。

我試圖在循環中執行以下查詢,以提取所有必需的數據並將其存儲到php中的二維變量中:

$dialecticSides = array("yes","no");
$numberSides = 2;
$dialecticRow = array("red","blue","green");
$numberRows = 3;

$dialectic_queryString = $dialectic_mysqlQuery = $dialectic_sqlResult = $dialectic_totalRows = array();

for($x=0;$x<$numberSides;$x++) {
    for ($y=0;$y<$numberRows;$y++) {        
        $dialectic_queryString[$x][$y] = "SELECT * FROM ". $dialectic_sqlTable ." WHERE side = '" . $dialecticSides[$x]. "' AND category = '". $dialecticRow[$y]."' ORDER BY rating DESC";
        $dialectic_mysqlQuery[$x][$y] = mysql_query($dialectic_queryString[$x][$y], $commenting_conn) or die(mysql_error());
        $dialectic_sqlResult[$x][$y] = mysql_fetch_assoc($dialectic_mysqlQuery[$x][$y]);
        $dialectic_totalRows[$x][$y] = mysql_num_rows($dialectic_sqlResult[$x][$y]);

        var_dump($dialectic_sqlResult);
    }
}

我想要的輸出是這樣的:

Array
(
    [0] => Array
        (
          [0] => Array
             (
               all the comments which are in row 0 (yes) and side 0 (red)
             )
          [1] => Array
             (
               all the comments which are in row 0 (yes) and side 1 (blue)
             )
          [2] => Array
             (
               all the comments which are in row 0 (yes) and side 2 (green)
             )
        )
    [1] => Array
        (
          [0] => Array
             (
                all the comments which are in row 1 (no) and side 0 (red)
             )
          [1] => Array
             (
               all comments which are in row 1 (no) and side 1 (blue)
             )
          [2] => Array
             (
               all the comments which are in row 1 (no) and side 2 (green)
             )
        )
)

本質上,如果我想知道自己在做什么,或者是否應該放棄並返回硬編碼到不同結果變量的查詢。

我的查詢失敗-查詢的輸出為null。 我究竟做錯了什么? 提前致謝!

====解決了它====

for($x=0;$x<$numberSides;$x++) {
for ($y=0;$y<$numberRows;$y++) {        
    $queryString[$x][$y] = "SELECT * FROM comments WHERE topic_id = '{$topicid}' AND side = '{$x}' AND row = '{$y}'";
    $result[$x][$y] = mysqli_query($db_connection,$queryString[$x][$y]) or die(mysqli_error($db_connection));
    while($eachcomment = mysqli_fetch_assoc($result[$x][$y])) {
        $array[$x][$y][] = $eachcomment;
    }
}

您不想將查詢等放入數組中。
您只需要一個查詢。
定義2個數組以獲取輸出行和列:

$rowarray = array("yes" => 0, "no" => 1); // 2 rows?
$colarray = array("red" => 0, "blue" => 1, "green" => 2); // 3 cols?

初始化輸出數組:

$outputarray = array(array('', '', ''), array('', '', ''));

從查詢中獲得$ result。

SELECT * FROM table

(沒有WHERE子句)
然后處理結果:

while (($qrow = mysql_fetch_assoc($result))<>NULL) {

$ qrow是一個關聯數組:'side'=>'yes','category'=>'red',等等。
對於每個qrow,獲取輸出行和col:

$row = $rowarray[$qrow['side']];
$col = $colarray[$qrow['category']]

此時,您可以將想要的內容累積到$ outputarray中:

$outputarray[$row][$col] .= $qrow['comments']; 

這是“ while”循環的結束:

}

暫無
暫無

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

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