簡體   English   中英

從 PHP 中未排序的 MySQL 表/多維數組中查找和排序數據

[英]Finding and sorting data from an unsorted MySQL table / multidimensional array in PHP

我有一個看起來像這樣的表:

ID app_id field_id 價值
xxx 年年 9
xxx 年年 2

“值”列包含名字、姓氏、地址、電子郵件等數據。 識別“value”列中的值類型的唯一方法是通過“field_id”。 同時,“app_id”充當用戶/用戶 ID 的唯一標識符。
(該表由 WordPress 插件提供,因此無論多么糟糕,我都無法更改它。)

這意味着要獲取用戶的名字和姓氏,我必須搜索具有相同 app_id 的 2 行,然后獲取字段 ID 為 9 的名字和 2 的姓氏的值列。

所以我想打印出來的是:(偽代碼)

for ($app_id) {
 if (app_id == $app_id && field_id = 9) {
   $first_name = value
 }
 if (app_id == $app_id && field_id = 2) {
   $last_name = value
 }
echo $first_name . $last_name;
}

到目前為止,我只有以下代碼,它將所有數據放在一個多維數組中:

$mysqli = new mysqli("localhost","dbane","dbpass","dbuser");
$mysqli->set_charset("utf8mb4");
$fields = $mysqli -> query("SELECT * FROM name_of_table");
$results = $fields->fetch_all();
foreach ($results as $result) {
    foreach ($result as $key => $value) {
        /* Lost what to do here */
    }
}

我將如何 go 獲取每個用戶的名字和姓氏並將它們放在一起?

該數據庫包含大約 20.000 行,因此不能選擇使用多個 mysqli_queries,因為加載時間為 10 分鍾以上,並且給服務器帶來了可怕的負載。

在 RiggsFolly 的幫助下,我通過以下方式解決了它:

    for ($i = $count; $i >= ($count - 1000); $i--) {
        $data = $mysqli -> query("SELECT * FROM table_name WHERE app_id = $i AND field_id IN (2,9,15,5,10,11,6,3)");
        $names = $data->fetch_all();
        foreach ($names as list($a, $b, $c, $d)) {
            switch ($c)
                case 9:
                    $first_name = $d;
                    break:
                case 15:
                    $last_name = $d;
                    break;
        }
    }

暫無
暫無

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

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