通过使用html表单,我想从sql数据库中读出数据并在html表中显示它们。这工作得很好!现在,我想在sql-select-query之后减少表中的列数。
$field = mysqli_fetch_fields($result)
返回列名,var_dunp($field)
返回以下结果:
阵列(11){[0]=>对象(stdClass) # 3(13){["name"]=>字符串(2)"id" ["orgname"]=> string(2)"id" ["table"]=> string(8)" addressen " ["orgtable"]=> string(8)" addressen " ["def"]=> string(0)" ["db"]=> string(4)"team" ["catalog"]=> string(3)"def"("max_length")=> int(1)["长度"]=> int(11)("charsetnr")=> int(63)["旗帜"]=> int(49667)("类型")=> int(3)["小数"]=> int(0)}[1] =>对象(stdClass) # 4(13){["name"]=>字符串(7)"Vorname" ["orgname"]=> string(7)"Vorname" ["table"]=> string(8)" addressen " ["orgtable"]=> string(8)" addressen " ["def"]=> string(0)" ["db"]=> string(4)"team" ["catalog"]=> string(3)"def"("max_length")=> int(9)("长度")=> int(60)("charsetnr")=> int(33)("旗帜")=> int(0)("类型")=> int(253)["小数"]=> int(0)}[2] =>对象(stdClass) # 5(13){["name"]=>字符串(4)"Name" ["orgname"]=> string(4)"Name" ["table"]=> string(8)" addressen " ["orgtable"]=> string(8)" addressen " ["def"]=> string(0)" ["db"]=> string(4)"team" ["catalog"]=> string(3)"def"("max_length")=> int(14)("长度")=> int(60)("charsetnr")=> int(33)("旗帜")=> int(0)("类型")=> int(253)["小数"]=> int(0)}[3] =>对象(stdClass) # 6(13){["name"]=>字符串(3)"Str" ["orgname"]=> string(3)"Str" ["table"]=>字符串(8)" addressen " ["orgtable"]=> string(8)" addressen " ["def"]=> string(0)" ["db"]=> string(4)"team" ["catalog"]=> string(3)"def"("max_length")=> int(22)("长度")=> int(60)("charsetnr")=> int(33)("旗帜")=> int(0)("类型")=> int(253)["小数"]=> int(0)}[4] =>对象(stdClass) # 7(13){["name"]=>字符串(3)"PLZ" ["orgname"]=> string(3)"PLZ" ["table"]=> string(8)" addressen " ["orgtable"]=> string(8)" addressen " ["def"]=> string(0)" ["db"]=> string(4)"team" ["catalog"]=> string(3)"def"("max_length")=> int(4)["长度"]=> int(15)("charsetnr")=> int(33)("旗帜")=> int(0)("类型")=> int(254)["小数"]=> int(0)}[5] =>对象(stdClass) # 8(13){["name"]=>字符串(3)"Ort" ["orgname"]=> string(3)"Ort" ["table"]=> string(8)" addressen " ["orgtable"]=> string(8)" addressen " ["def"]=> string(0)" ["db"]=> string(4)"team" ["catalog"]=> string(3)"def"("max_length")=> int(10)("长度")=> int(90)["charsetnr"]=> int(33)("旗帜")=> int(0)("类型")=> int(253)["小数"]=> int(0)}[6] =>对象(stdClass) # 9(13){["name"]=>字符串(3)"Tel" ["orgname"]=> string(3)"Tel" ["table"]=> string(8)" addressen " ["orgtable"]=> string(8)" addressen " ["def"]=> string(0)" ["db"]=> string(4)"team" ["catalog"]=> string(3)"def"("max_length")=> int(11)("长度")=> int(75)["charsetnr"]=> int(33)("旗帜")=> int(0)("类型")=> int(253)["小数"]=> int(0)}[7] =>对象(stdClass) # 10(13){["name"]=>字符串(5)"EMail" ["orgname"]=> string(5)"EMail" ["table"]=> string(8)" addressen " ["orgtable"]=> string(8)" addressen " ["def"]=> string(0)" ["db"]=> string(4)"team" ["catalog"]=> string(3)"def"("max_length")=> int(20)["长度"]=> int(90)["charsetnr"]=> int(33)("旗帜")=> int(0)("类型")=> int(253)["小数"]=> int(0)}[8] =>对象(stdClass) # 11(13){["name"]=>字符串(3)"WWW" ["orgname"]=> string(3)"WWW" ["table"]=> string(8)" addressen " ["orgtable"]=> string(8)" addressen " ["def"]=> string(0)" ["db"]=> string(4)"team" ["catalog"]=> string(3)"def"("max_length")=> int(17)("长度")=> int(90)["charsetnr"]=> int(33)("旗帜")=> int(0)("类型")=> int(253)["小数"]=> int(0)}[9] =>对象(stdClass) # 12(13){["name"]=>字符串(7)"Notizen" ["orgname"]=> string(7)"Notizen" ["table"]=> string(8)" addressen " ["orgtable"]=> string(8)" addressen " ["def"]=> string(0)" ["db"]=> string(4)"team" ["catalog"]=> string(3)"def"("max_length")=> int(13)("长度")=> int(196605)["charsetnr"]=> int(33)("旗帜")=> int(16)("类型")=> int(252)["小数"]=> int(0)}[10] =>对象(stdClass) # 13(13){["name"]=>字符串(10)"Geburtstag" ["orgname"]=> string(10)"Geburtstag" ["table"]=> string(8)" addressen " ["orgtable"]=> string(8)" addressen " ["def"]=> string(0)" ["db"]=> string(4)"team" ["catalog"]=> string(3)"def"("max_length")=> int(10)("长度")=> int(30)("charsetnr")=> int(33)("旗帜")=> int(0)("类型")=> int(253)["小数"]=> int (0)}}
因为这是一个数组,我现在想要从这个数组中删除选定的元素,并尝试这样做:
// Initilize what to delete
$delete_val = array('PLZ');
// Search for the array key and unset
foreach($delete_val as $key){
$keyToDelete = array_search($key, $field);
unset($field[$keyToDelete]);
}
或
$toremove = "PLZ";
$field = array_flip($field);
unset($field[$toremove]);
$field = array_flip($field);
然而,两种方法都不起作用。显然,我想要删除的元素在这个方法的数组中找不到。
在第二步中,我必须修改while-loop,以便在相应的列中显示正确的值:
$nr = 1;
while ($row = mysqli_fetch_array($result)) {
echo "<td>" . $nr . "</td>";
for ($k=0; $k<$numcols; $k++) {
echo "<td>" . $row[$k] . "</td>"; //Prints the data
}
echo "</tr>";
$nr = $nr + 1;
} // ende of while-loop
如果有人能帮我解决这个问题,我会很感激的。 那不是正常的数组,那是一个对象数组,这是mysqli_fetch_fields()
函数所期望的,所以你的删除逻辑不会在时尚中工作。你的代码应该是这样的:
(假设PLZ
是此处要删除的列)
// Initilize what to delete
$delete_val = array('PLZ');
// Search for the array key and unset
foreach($delete_val as $dv){
foreach($field as $key => $object){
$array = (array)$object;
if(in_array($dv, $array, true)){
unset($field[$key]);
}
}
}
$field = array_values($field);
// display $field array
var_dump($field);