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